exiftool_vendored 10.58.0 → 10.65.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.

Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +100 -1
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +39 -38
  7. data/bin/arg_files/exif2iptc.args +3 -0
  8. data/bin/arg_files/iptc2exif.args +3 -0
  9. data/bin/config_files/example.config +16 -14
  10. data/bin/config_files/photoshop_paths.config +10 -0
  11. data/bin/exiftool +71 -65
  12. data/bin/lib/Image/ExifTool/APE.pm +5 -0
  13. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +31 -15
  14. data/bin/lib/Image/ExifTool/Canon.pm +18 -4
  15. data/bin/lib/Image/ExifTool/CanonCustom.pm +3 -0
  16. data/bin/lib/Image/ExifTool/Charset/DOSLatin1.pm +49 -0
  17. data/bin/lib/Image/ExifTool/Charset/DOSLatinUS.pm +49 -0
  18. data/bin/lib/Image/ExifTool/Charset.pm +8 -5
  19. data/bin/lib/Image/ExifTool/Exif.pm +37 -18
  20. data/bin/lib/Image/ExifTool/FLAC.pm +47 -37
  21. data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  22. data/bin/lib/Image/ExifTool/FujiFilm.pm +5 -2
  23. data/bin/lib/Image/ExifTool/GPS.pm +6 -6
  24. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  25. data/bin/lib/Image/ExifTool/H264.pm +2 -0
  26. data/bin/lib/Image/ExifTool/ID3.pm +8 -3
  27. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  28. data/bin/lib/Image/ExifTool/Import.pm +4 -1
  29. data/bin/lib/Image/ExifTool/InDesign.pm +11 -7
  30. data/bin/lib/Image/ExifTool/Kodak.pm +4 -1
  31. data/bin/lib/Image/ExifTool/Lang/de.pm +31 -31
  32. data/bin/lib/Image/ExifTool/MWG.pm +12 -4
  33. data/bin/lib/Image/ExifTool/MakerNotes.pm +3 -3
  34. data/bin/lib/Image/ExifTool/Matroska.pm +2 -1
  35. data/bin/lib/Image/ExifTool/Microsoft.pm +3 -3
  36. data/bin/lib/Image/ExifTool/Minolta.pm +71 -61
  37. data/bin/lib/Image/ExifTool/Nikon.pm +286 -43
  38. data/bin/lib/Image/ExifTool/NikonCustom.pm +1049 -0
  39. data/bin/lib/Image/ExifTool/Olympus.pm +4 -1
  40. data/bin/lib/Image/ExifTool/PNG.pm +4 -7
  41. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +24 -1
  42. data/bin/lib/Image/ExifTool/Pentax.pm +20 -6
  43. data/bin/lib/Image/ExifTool/Photoshop.pm +24 -3
  44. data/bin/lib/Image/ExifTool/QuickTime.pm +545 -14
  45. data/bin/lib/Image/ExifTool/README +16 -9
  46. data/bin/lib/Image/ExifTool/RIFF.pm +8 -1
  47. data/bin/lib/Image/ExifTool/Samsung.pm +5 -4
  48. data/bin/lib/Image/ExifTool/Sigma.pm +9 -1
  49. data/bin/lib/Image/ExifTool/Sony.pm +327 -153
  50. data/bin/lib/Image/ExifTool/TagLookup.pm +3273 -3220
  51. data/bin/lib/Image/ExifTool/TagNames.pod +317 -38
  52. data/bin/lib/Image/ExifTool/Validate.pm +15 -1
  53. data/bin/lib/Image/ExifTool/WriteExif.pl +5 -0
  54. data/bin/lib/Image/ExifTool/WriteIPTC.pl +23 -1
  55. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +8 -2
  56. data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -0
  57. data/bin/lib/Image/ExifTool/Writer.pl +96 -18
  58. data/bin/lib/Image/ExifTool/XMP.pm +20 -11
  59. data/bin/lib/Image/ExifTool/XMP2.pl +634 -583
  60. data/bin/lib/Image/ExifTool.pm +124 -17
  61. data/bin/lib/Image/ExifTool.pod +86 -82
  62. data/bin/perl-Image-ExifTool.spec +38 -37
  63. data/lib/exiftool_vendored/version.rb +1 -1
  64. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72daef9a11b65e07249202a45cd992a51acb07b6
4
- data.tar.gz: 62cdaa5125babfc3efcc8e8813a0392fcc373074
3
+ metadata.gz: 27a44a58ea12d15a33606f84733a1812f93425ce
4
+ data.tar.gz: 146f7d7515b8ac7d284a8002cf3fbb2645b7b9e3
5
5
  SHA512:
6
- metadata.gz: e69f4f592268effb10cd7b4b9ca7c75307806cc3605836861a3ac6bf8d7781707939b64d05b7e11d99521add8ef5c7b9bac02ca24cee205aabfe7f8a3b2cf6a4
7
- data.tar.gz: 4d8198e2a6fbd32b0fa85e76bf4261c8984aabb549ceba9c7a2a6ed1af0a38084d6d8fafe96f3afbc73acd48b97b0d94ae20a2b2cc2641e0a1d02513730ef4bc
6
+ metadata.gz: f642258f4a9d9f62063d0194623763af4e9e2d419420c6bce9bcc3e2df5d101f2ce895537f45c8a9c65ea35fa1d28f0652a0b338832fa1daa715825d351d7193
7
+ data.tar.gz: d4f6acbbe47771276b279e978dfd6364be06d785e6684a74f5bc25d826f0d037cfbe1a7995c7a87497988a34a62f60441ddcf1b490035b318424e02d7e47a088
data/bin/Changes CHANGED
@@ -7,13 +7,112 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
7
7
  Note: The most recent production release is Version 10.55. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ Oct. 31, 2017 - Version 10.65
11
+
12
+ - Added support for DOSLatinUS (cp437) and DOSLatin1 (cp850) character sets
13
+ - Added Extra ForceWrite tag for forcing metadata in a file to be rewritten
14
+ - Added write support for RAF images from some newer FujiFilm models
15
+ - Added a new SonyModelID, Sony LensType and Olympus LensTypes (thanks LibRaw)
16
+ - Added a new Pentax LensType
17
+ - Added a new Nikon LensID
18
+ - Decode more Sony tags for new models (thanks Jos Roost)
19
+ - Decode Nikon D850 ShotInfo tags and custom settings (thanks Warren Hatch)
20
+ - Decode Nikon D850 ColorTemperatureAuto (thanks LibRaw)
21
+ - Decode Photoshop LayerModifyDates and LayerIDs
22
+ - Improved decoding of Nikon D5/D500/D810 ShotInfo tags
23
+ - Allow advanced formatting expressions to return a list reference
24
+ - Fixed problem in Composite:GPSAltitude when derived from an "undef" altitude
25
+ - Fixed bug which could result in runtime warning when excluding some tags
26
+ from being extracted
27
+
28
+ Oct. 17, 2017 - Version 10.64
29
+
30
+ - Added a new Nikon LensID
31
+ - Added a new SonyModelID
32
+ - Added a new CanonModelID (thanks LibRaw)
33
+ - Added some new non-standard CustomRendered values
34
+ - Decode FrameRate from FLIR SEQ files (thanks Sebastian Hani)
35
+ - Enhanced shift feature to be able to shift some not-so-simple numerical
36
+ values (eg. GPSLatitude) with -TAG+=VALUE syntax
37
+ - Fixed problem with possible malformed UTF-8 when writing IPTC values that
38
+ require truncation
39
+ - Fixed incorrect Writable type for XMP-GSpherical:TimeStamp
40
+ - Fixed incorrect family 2 group name for Nikon HDRInfo tags
41
+
42
+ Oct. 4, 2017 - Version 10.63
43
+
44
+ - Added a number of new Canon LensTypes (thanks Norbert Wasser for some)
45
+ - Added a new CanonModelID
46
+ - Added a new Olympus CameraType
47
+ - Decode MD5Signature in FLAC StreamInfo (thanks Tim Eliseo)
48
+ - Improved decoding of HEIC/HEIF metadata
49
+ - Removed useless write support for QuickTime date/time tags in HEIC/HEIF
50
+ images
51
+ - Fixed "Incorrect XMP stream length" problem when writing some INDD files
52
+
53
+ Sept. 28, 2017 - Version 10.62
54
+
55
+ - Added preliminary support for HEIC/HEIF images
56
+ - Added support for Google depthmap metadata (XMP-GDepth)
57
+ - Added some new Sony/Minolta lenses (thanks LibRaw and Jos Roost)
58
+ - Added a new CanonModelID (thanks Norbert Wasser)
59
+ - Added a new Nikon LensID (thanks Michael Tapes)
60
+ - Decode a new Sony tag (thanks Jos Roost)
61
+ - Decode some new Nikon tags (thanks Warren Hatch)
62
+ - Decode maker notes from Leica TL2
63
+ - Enhanced ID3 -v2 output to show frame flags
64
+ - Fixed problem decoding Nikon D810 camera tilt angles
65
+ - Fixed problem where SphericalVideoXML metadata was deleted when writing XMP
66
+ to a QuickTime-format file containing this information
67
+
68
+ Aug. 18, 2017 - Version 10.61
69
+
70
+ - Added a new Canon LensType (thanks LibRaw)
71
+ - Added a number of new Sigma, Nikon and Sony lenses (thanks Jos Roost)
72
+ - Added a new Nikon LensID (thanks Yang You)
73
+ - Decode a number of new Sony tags (thanks Jos Roost)
74
+ - Decode Panasonic FocusDistance (thanks David Ellsworth)
75
+ - Updated to the IPTC video metadata 1.1 specification
76
+ - Restored the ability to delete JpgFromRaw from RAW images (broken in 10.38)
77
+ - Fixed problem decoding maker notes from Pentax K-70 AVI videos
78
+ - Fixed problem conditionally replacing a tag if the value to be deleted was
79
+ taken from another tag while the new value was assigned directly
80
+
81
+ July 21, 2017 - Version 10.60
82
+
83
+ - Added two new Sony/Minolta LensTypes (thanks Jos Roost)
84
+ - Added a new Pentax LensType (thanks Dieter Pearcey)
85
+ - Added new Composite UniquePathPoints tag to photoshop_paths.config
86
+ - Extract raw-data JFIF/JFXX thumbnails as ThumbnailTIFF
87
+ - Improved Sony LensSpec conversion
88
+ - Updated German translations (thanks Herbert Kauer)
89
+ - Set family 1 group name of JFXX ThumbnailImage to JFXX instead of JFIF
90
+ - Fixed problem with %C no longer incrementing properly
91
+
92
+ July 7, 2017 - Version 10.59
93
+
94
+ - Added a new Canon LensType (thanks LibRaw)
95
+ - Added a new Nikon LensID
96
+ - Added "wrong extension" warning to experimental -validate feature
97
+ - Decode Pentax maker notes in Q-S1 AVI videos
98
+ - Updated iptc2exif.args and exif2iptc.args to support new EXIF OffsetTime
99
+ tags (thanks Herb)
100
+ - Patched potential problem with "Use of uninitialized value $pos" error when
101
+ importing malformed JSON data
102
+ - Patched to avoid runtime warning due to invalid Nikon ShutterCount value
103
+ - Raise an error if -b is used with the -csv option
104
+ - Changed PNG exIf chunk name to eXIf
105
+ - Fixed bug introduced in 10.26 which could cause hang when %C is used in an
106
+ output file name
107
+ - Fixed MWG:DateTimeOriginal and MWG:CreateDate to return XMP when EXIF and
108
+ IPTC don't exist
109
+
10
110
  June 29, 2017 - Version 10.58
11
111
 
12
112
  - Added read support for RIFF-format MBWF/RF64 files
13
113
  - Added write support for dji-drone XMP tags
14
114
  - Added a new Canon LensType (thanks Steve Bates)
15
115
  - Added a few new Sony/Minolta LensType values (thanks Jos Roost)
16
- - Added a new Canon LensType
17
116
  - Added a couple of new CanonModelID values (thanks LibRaw and Norbert Wasser)
18
117
  - Decode some new FujiFilm tags (thanks Chris Schucker)
19
118
  - Enhanced FileSize print conversion to show in "GB" for large files
data/bin/MANIFEST CHANGED
@@ -207,6 +207,8 @@ lib/Image/ExifTool/Charset.pm
207
207
  lib/Image/ExifTool/Charset/Arabic.pm
208
208
  lib/Image/ExifTool/Charset/Baltic.pm
209
209
  lib/Image/ExifTool/Charset/Cyrillic.pm
210
+ lib/Image/ExifTool/Charset/DOSLatin1.pm
211
+ lib/Image/ExifTool/Charset/DOSLatinUS.pm
210
212
  lib/Image/ExifTool/Charset/Greek.pm
211
213
  lib/Image/ExifTool/Charset/Hebrew.pm
212
214
  lib/Image/ExifTool/Charset/JIS.pm
data/bin/META.json CHANGED
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "10.58"
50
+ "version" : "10.65"
51
51
  }
data/bin/META.yml CHANGED
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 10.58
31
+ version: 10.65
data/bin/README CHANGED
@@ -14,42 +14,43 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 3FR r | DV r | JSON r | ODT r | RIFF r
18
- 3G2 r/w | DVB r/w | K25 r | OFR r | RSRC r
19
- 3GP r/w | DYLIB r | KDC r | OGG r | RTF r
20
- A r | EIP r | KEY r | OGV r | RW2 r/w
21
- AA r | EPS r/w | LA r | OPUS r | RWL r/w
22
- AAX r/w | EPUB r | LFP r | ORF r/w | RWZ r
23
- ACR r | ERF r/w | LNK r | OTF r | RM r
24
- AFM r | EXE r | M2TS r | PAC r | SEQ r
25
- AI r/w | EXIF r/w/c | M4A/V r/w | PAGES r | SO r
26
- AIFF r | EXR r | MAX r | PBM r/w | SR2 r/w
27
- APE r | EXV r/w/c | MEF r/w | PCD r | SRF r
28
- ARW r/w | F4A/V r/w | MIE r/w/c | PDB r | SRW r/w
29
- ASF r | FFF r/w | MIFF r | PDF r/w | SVG r
30
- AVI r | FLA r | MKA r | PEF r/w | SWF r
31
- AZW r | FLAC r | MKS r | PFA r | THM r/w
32
- BMP r | FLIF r/w | MKV r | PFB r | TIFF r/w
33
- BPG r | FLV r | MNG r/w | PFM r | TORRENT r
34
- BTF r | FPF r | MOBI r | PGF r | TTC r
35
- CHM r | FPX r | MODD r | PGM r/w | TTF r
36
- COS r | GIF r/w | MOI r | PLIST r | VCF r
37
- CR2 r/w | GZ r | MOS r/w | PICT r | VRD r/w/c
38
- CRW r/w | HDP r/w | MOV r/w | PMP r | VSD r
39
- CS1 r/w | HDR r | MP3 r | PNG r/w | WAV r
40
- DCM r | HTML r | MP4 r/w | PPM r/w | WDP r/w
41
- DCP r/w | ICC r/w/c | MPC r | PPT r | WEBP r
42
- DCR r | ICS r | MPG r | PPTX r | WEBM r
43
- DFONT r | IDML r | MPO r/w | PS r/w | WMA r
44
- DIVX r | IIQ r/w | MQV r/w | PSB r/w | WMV r
45
- DJVU r | IND r/w | MRW r/w | PSD r/w | WV r
46
- DLL r | INX r | MXF r | PSP r | X3F r/w
47
- DNG r/w | ISO r | NEF r/w | QTIF r/w | XCF r
48
- DOC r | ITC r | NRW r/w | RA r | XLS r
49
- DOCX r | J2C r | NUMBERS r | RAF r/w | XLSX r
50
- DPX r | JNG r/w | O r | RAM r | XMP r/w/c
51
- DR4 r/w/c | JP2 r/w | ODP r | RAR r | ZIP r
52
- DSS r | JPEG r/w | ODS r | RAW r/w |
17
+ 3FR r | DVB r/w | JSON r | OFR r | RTF r
18
+ 3G2 r/w | DYLIB r | K25 r | OGG r | RW2 r/w
19
+ 3GP r/w | EIP r | KDC r | OGV r | RWL r/w
20
+ A r | EPS r/w | KEY r | OPUS r | RWZ r
21
+ AA r | EPUB r | LA r | ORF r/w | RM r
22
+ AAX r/w | ERF r/w | LFP r | OTF r | SEQ r
23
+ ACR r | EXE r | LNK r | PAC r | SO r
24
+ AFM r | EXIF r/w/c | M2TS r | PAGES r | SR2 r/w
25
+ AI r/w | EXR r | M4A/V r/w | PBM r/w | SRF r
26
+ AIFF r | EXV r/w/c | MAX r | PCD r | SRW r/w
27
+ APE r | F4A/V r/w | MEF r/w | PDB r | SVG r
28
+ ARW r/w | FFF r/w | MIE r/w/c | PDF r/w | SWF r
29
+ ASF r | FLA r | MIFF r | PEF r/w | THM r/w
30
+ AVI r | FLAC r | MKA r | PFA r | TIFF r/w
31
+ AZW r | FLIF r/w | MKS r | PFB r | TORRENT r
32
+ BMP r | FLV r | MKV r | PFM r | TTC r
33
+ BPG r | FPF r | MNG r/w | PGF r | TTF r
34
+ BTF r | FPX r | MOBI r | PGM r/w | VCF r
35
+ CHM r | GIF r/w | MODD r | PLIST r | VRD r/w/c
36
+ COS r | GZ r | MOI r | PICT r | VSD r
37
+ CR2 r/w | HDP r/w | MOS r/w | PMP r | WAV r
38
+ CRW r/w | HDR r | MOV r/w | PNG r/w | WDP r/w
39
+ CS1 r/w | HEIC r | MP3 r | PPM r/w | WEBP r
40
+ DCM r | HEIF r | MP4 r/w | PPT r | WEBM r
41
+ DCP r/w | HTML r | MPC r | PPTX r | WMA r
42
+ DCR r | ICC r/w/c | MPG r | PS r/w | WMV r
43
+ DFONT r | ICS r | MPO r/w | PSB r/w | WV r
44
+ DIVX r | IDML r | MQV r/w | PSD r/w | X3F r/w
45
+ DJVU r | IIQ r/w | MRW r/w | PSP r | XCF r
46
+ DLL r | IND r/w | MXF r | QTIF r/w | XLS r
47
+ DNG r/w | INX r | NEF r/w | RA r | XLSX r
48
+ DOC r | ISO r | NRW r/w | RAF r/w | XMP r/w/c
49
+ DOCX r | ITC r | NUMBERS r | RAM r | ZIP r
50
+ DPX r | J2C r | O r | RAR r |
51
+ DR4 r/w/c | JNG r/w | ODP r | RAW r/w |
52
+ DSS r | JP2 r/w | ODS r | RIFF r |
53
+ DV r | JPEG r/w | ODT r | RSRC r |
53
54
 
54
55
  Meta Information
55
56
  ----------------------+----------------------+---------------------
@@ -101,8 +102,8 @@ your home directory, then you would type the following commands in a
101
102
  terminal window to extract and run ExifTool:
102
103
 
103
104
  cd ~/Desktop
104
- gzip -dc Image-ExifTool-10.58.tar.gz | tar -xf -
105
- cd Image-ExifTool-10.58
105
+ gzip -dc Image-ExifTool-10.65.tar.gz | tar -xf -
106
+ cd Image-ExifTool-10.65
106
107
  ./exiftool t/images/ExifTool.jpg
107
108
 
108
109
  Note: These commands extract meta information from one of the test images.
@@ -8,6 +8,7 @@
8
8
  # Requires: ExifTool version 6.51 or later
9
9
  #
10
10
  # Revisions: 2011/09/13 - P. Harvey Created
11
+ # 2017/07/06 - PH Set time zone from new EXIF OffsetTime tags
11
12
  #
12
13
  # Notes: 1) IPTC requires a timezone but EXIF does not support one, so
13
14
  # the local timezone is assumed when writing the IPTC times
@@ -23,6 +24,8 @@
23
24
  # appropriate date or time part out of the EXIF date/time value
24
25
  -IPTC:DateCreated < EXIF:DateTimeOriginal
25
26
  -IPTC:TimeCreated < EXIF:DateTimeOriginal
27
+ -IPTC:TimeCreated < Composite:SubSecDateTimeOriginal
26
28
  -IPTC:DigitalCreationDate < EXIF:CreateDate
27
29
  -IPTC:DigitalCreationTime < EXIF:CreateDate
30
+ -IPTC:DigitalCreationTime < Composite:SubSecCreateDate
28
31
  # end
@@ -8,6 +8,7 @@
8
8
  # Requires: ExifTool version 7.98 or later
9
9
  #
10
10
  # Revisions: 2011/09/13 - P. Harvey Created
11
+ # 2017/07/06 - PH Set new EXIF OffsetTime tags
11
12
  #
12
13
  # Notes: These arguments will not delete existing EXIF tags which are
13
14
  # missing from the IPTC. The EXIF tags should be deleted
@@ -18,4 +19,6 @@
18
19
  -EXIF:ImageDescription < IPTC:Caption-Abstract
19
20
  -EXIF:DateTimeOriginal < Composite:DateTimeCreated
20
21
  -EXIF:CreateDate < Composite:DigitalCreationDateTime
22
+ -EXIF:OffsetTimeOriginal < IPTC:TimeCreated
23
+ -EXIF:OffsetTimeDigitized < IPTC:DigitalCreationTime
21
24
  # end
@@ -155,13 +155,15 @@
155
155
  },
156
156
  # Composite tags are added to the Composite table:
157
157
  'Image::ExifTool::Composite' => {
158
- # Composite tags are unique: The Require/Desire elements specify
158
+ # Composite tags have values that are derived from the values of
159
+ # other tags. The Require/Desire elements below specify constituent
159
160
  # tags that must/may exist, and the keys of these hashes are used as
160
- # indices in the @val array of the ValueConv expression to access
161
- # the numerical (-n) values of these tags. All Require'd tags must
162
- # exist for the Composite tag to be evaluated. If no Require'd tags
163
- # are specified, then at least one of the Desire'd tags must exist.
164
- # See the Composite table in Image::ExifTool::Exif for more examples,
161
+ # indices in the @val array of the ValueConv expression to access the
162
+ # numerical (-n) values of these tags. Print-converted values are
163
+ # accessed via the @prt array. All Require'd tags must exist for
164
+ # the Composite tag to be evaluated. If no Require'd tags are
165
+ # specified, then at least one of the Desire'd tags must exist. See
166
+ # the Composite table in Image::ExifTool::Exif for more examples,
165
167
  # and lib/Image/ExifTool/README for all of the details.
166
168
  BaseName => {
167
169
  Require => {
@@ -279,14 +281,14 @@
279
281
  },
280
282
  List => 'Seq', # structures may also be elements of a list
281
283
  },
282
- # Each field in the structure has an automatically-generated
283
- # corresponding flattened tag with an ID that is the concatenation
284
- # of the original structure tag ID and the field name (after
285
- # capitalizing the first letter of the field name if necessary).
286
- # The Name and/or Description of these flattened tags may be changed
287
- # if desired, but all other tag properties are taken from the
288
- # structure field definition. The "Flat" flag must be used when
289
- # setting the Name or Description of a flattened tag. For example:
284
+ # Each field in the structure has a corresponding flattened tag that is
285
+ # generated automatically with an ID made from a concatenation of the
286
+ # original structure tag ID and the field name (after capitalizing the
287
+ # first letter of the field name if necessary). The Name and/or
288
+ # Description of these flattened tags may be changed if desired, but all
289
+ # other tag properties are taken from the structure field definition.
290
+ # The "Flat" flag must be used when setting the Name or Description of a
291
+ # flattened tag. For example:
290
292
  NewXMPxxxStructX => { Name => 'SomeOtherName', Flat => 1 },
291
293
  );
292
294
 
@@ -67,6 +67,7 @@
67
67
  # 2017/03/19 - PH Added "-" or "+" at the start of closed or open
68
68
  # subpath respectively
69
69
  # 2017/06/03 - PH Added TotalPathPoints
70
+ # 2017/07/17 - PH Added UniquePathPoints
70
71
  #
71
72
  # References: http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,1621.0.html
72
73
  # http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3910.0.html
@@ -149,6 +150,8 @@ sub PrintPath($$;$$)
149
150
  my ($val, $self) = @_;
150
151
  my $count = 0;
151
152
  my $pts = 0;
153
+ my $uniq = 0;
154
+ my %uniq;
152
155
  foreach (@$val) {
153
156
  next unless defined $_;
154
157
  ++$count;
@@ -159,13 +162,20 @@ sub PrintPath($$;$$)
159
162
  my $type = Get16u($_, $pos);
160
163
  last if $type == 0x2f23; # (start of path name added by ExifTool)
161
164
  next unless {1=>1,2=>1,4=>1,5=>1}->{$type};
165
+ my $pt = substr($$_, $pos+10, 8);
166
+ $uniq{$pt} or ++$uniq, $uniq{$pt} = 1;
162
167
  ++$pts;
163
168
  }
164
169
  }
165
170
  $$self{TotalPathPoints} = $pts;
171
+ $$self{UniquePathPoints} = $uniq;
166
172
  return $count;
167
173
  },
168
174
  },
175
+ UniquePathPoints => {
176
+ Require => 'PathCount',
177
+ ValueConv => '$$self{UniquePathPoints}',
178
+ },
169
179
  TotalPathPoints => {
170
180
  Require => 'PathCount',
171
181
  ValueConv => '$$self{TotalPathPoints}',
data/bin/exiftool CHANGED
@@ -12,7 +12,7 @@
12
12
  use strict;
13
13
  require 5.004;
14
14
 
15
- my $version = '10.58';
15
+ my $version = '10.65';
16
16
 
17
17
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
18
18
  my $exeDir;
@@ -1314,8 +1314,8 @@ if ($tagOut and ($csv or %printFmt or $tabFormat or $xml or ($verbose and $html)
1314
1314
  next;
1315
1315
  }
1316
1316
 
1317
- if ($textOut and $csv and $csv eq 'CSV' and not $isWriting) {
1318
- Warn "Sorry, -w may not be combined with -csv\n";
1317
+ if ($csv and $csv eq 'CSV' and not $isWriting and ($textOut or $binaryOutput)) {
1318
+ Warn 'Sorry, ' . ($textOut ? '-w' : '-b') . " may not be combined with -csv\n";
1319
1319
  $rtnVal = 1;
1320
1320
  next;
1321
1321
  }
@@ -3171,7 +3171,7 @@ sub ConvertBinary($)
3171
3171
  }
3172
3172
  } else {
3173
3173
  # (-b is not valid for HTML output)
3174
- my $bOpt = $html ? '' : ', use -b option to extract';
3174
+ my $bOpt = ($html or ($csv and $csv eq 'CSV')) ? '' : ', use -b option to extract';
3175
3175
  if ($$obj =~ /^Binary data \d+ bytes$/) {
3176
3176
  $obj = "($$obj$bOpt)";
3177
3177
  } else {
@@ -3724,15 +3724,16 @@ sub NextUnusedFilename($;$$)
3724
3724
  return $fmt unless $fmt =~ /%[-+]?\d*\.?\d*[lun]?[cC]/;
3725
3725
  my %sep = ( '-' => '-', '+' => '_' );
3726
3726
  my ($copy, $alpha) = (0, 'a');
3727
+ my $seq = $seqFileNum - 1;
3727
3728
  for (;;) {
3728
3729
  my ($filename, $pos) = ('', 0);
3729
3730
  while ($fmt =~ /(%([-+]?)(\d*)(\.?)(\d*)([lun]?)([cC]))/g) {
3730
3731
  $filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
3731
3732
  $pos = pos($fmt);
3732
3733
  my ($sign, $wid, $dec, $wid2, $mod, $tok) = ($2, $3 || 0, $4, $5 || 0, $6, $7);
3733
- my $seq = $seqFileNum - 1;
3734
+ my $diff = 0;
3734
3735
  if ($tok eq 'C') {
3735
- $seq += $wid if $wid;
3736
+ $diff = $wid;
3736
3737
  $wid = $wid2;
3737
3738
  } else {
3738
3739
  next unless $dec or $copy;
@@ -3741,13 +3742,13 @@ sub NextUnusedFilename($;$$)
3741
3742
  # add dash or underline separator if '-' or '+' specified
3742
3743
  $filename .= $sep{$sign} if $sign;
3743
3744
  if ($mod and $mod ne 'n') {
3744
- my $a = $tok eq 'C' ? Num2Alpha($seq) : $alpha;
3745
+ my $a = $tok eq 'C' ? Num2Alpha($diff + $seq++) : $alpha;
3745
3746
  my $str = ($wid and $wid > length $a) ? 'a' x ($wid - length($a)) : '';
3746
3747
  $str .= $a;
3747
3748
  $str = uc $str if $mod eq 'u';
3748
3749
  $filename .= $str;
3749
3750
  } else {
3750
- my $c = $tok eq 'C' ? $seq : $copy;
3751
+ my $c = $tok eq 'C' ? ($diff + $seq++) : $copy;
3751
3752
  my $num = $c + ($mod ? 1 : 0);
3752
3753
  $filename .= $wid ? sprintf("%.${wid}d",$num) : $num;
3753
3754
  }
@@ -4074,42 +4075,43 @@ supported by ExifTool (r = read, w = write, c = create):
4074
4075
 
4075
4076
  File Types
4076
4077
  ------------+-------------+-------------+-------------+------------
4077
- 3FR r | DV r | JSON r | ODT r | RIFF r
4078
- 3G2 r/w | DVB r/w | K25 r | OFR r | RSRC r
4079
- 3GP r/w | DYLIB r | KDC r | OGG r | RTF r
4080
- A r | EIP r | KEY r | OGV r | RW2 r/w
4081
- AA r | EPS r/w | LA r | OPUS r | RWL r/w
4082
- AAX r/w | EPUB r | LFP r | ORF r/w | RWZ r
4083
- ACR r | ERF r/w | LNK r | OTF r | RM r
4084
- AFM r | EXE r | M2TS r | PAC r | SEQ r
4085
- AI r/w | EXIF r/w/c | M4A/V r/w | PAGES r | SO r
4086
- AIFF r | EXR r | MAX r | PBM r/w | SR2 r/w
4087
- APE r | EXV r/w/c | MEF r/w | PCD r | SRF r
4088
- ARW r/w | F4A/V r/w | MIE r/w/c | PDB r | SRW r/w
4089
- ASF r | FFF r/w | MIFF r | PDF r/w | SVG r
4090
- AVI r | FLA r | MKA r | PEF r/w | SWF r
4091
- AZW r | FLAC r | MKS r | PFA r | THM r/w
4092
- BMP r | FLIF r/w | MKV r | PFB r | TIFF r/w
4093
- BPG r | FLV r | MNG r/w | PFM r | TORRENT r
4094
- BTF r | FPF r | MOBI r | PGF r | TTC r
4095
- CHM r | FPX r | MODD r | PGM r/w | TTF r
4096
- COS r | GIF r/w | MOI r | PLIST r | VCF r
4097
- CR2 r/w | GZ r | MOS r/w | PICT r | VRD r/w/c
4098
- CRW r/w | HDP r/w | MOV r/w | PMP r | VSD r
4099
- CS1 r/w | HDR r | MP3 r | PNG r/w | WAV r
4100
- DCM r | HTML r | MP4 r/w | PPM r/w | WDP r/w
4101
- DCP r/w | ICC r/w/c | MPC r | PPT r | WEBP r
4102
- DCR r | ICS r | MPG r | PPTX r | WEBM r
4103
- DFONT r | IDML r | MPO r/w | PS r/w | WMA r
4104
- DIVX r | IIQ r/w | MQV r/w | PSB r/w | WMV r
4105
- DJVU r | IND r/w | MRW r/w | PSD r/w | WV r
4106
- DLL r | INX r | MXF r | PSP r | X3F r/w
4107
- DNG r/w | ISO r | NEF r/w | QTIF r/w | XCF r
4108
- DOC r | ITC r | NRW r/w | RA r | XLS r
4109
- DOCX r | J2C r | NUMBERS r | RAF r/w | XLSX r
4110
- DPX r | JNG r/w | O r | RAM r | XMP r/w/c
4111
- DR4 r/w/c | JP2 r/w | ODP r | RAR r | ZIP r
4112
- DSS r | JPEG r/w | ODS r | RAW r/w |
4078
+ 3FR r | DVB r/w | JSON r | OFR r | RTF r
4079
+ 3G2 r/w | DYLIB r | K25 r | OGG r | RW2 r/w
4080
+ 3GP r/w | EIP r | KDC r | OGV r | RWL r/w
4081
+ A r | EPS r/w | KEY r | OPUS r | RWZ r
4082
+ AA r | EPUB r | LA r | ORF r/w | RM r
4083
+ AAX r/w | ERF r/w | LFP r | OTF r | SEQ r
4084
+ ACR r | EXE r | LNK r | PAC r | SO r
4085
+ AFM r | EXIF r/w/c | M2TS r | PAGES r | SR2 r/w
4086
+ AI r/w | EXR r | M4A/V r/w | PBM r/w | SRF r
4087
+ AIFF r | EXV r/w/c | MAX r | PCD r | SRW r/w
4088
+ APE r | F4A/V r/w | MEF r/w | PDB r | SVG r
4089
+ ARW r/w | FFF r/w | MIE r/w/c | PDF r/w | SWF r
4090
+ ASF r | FLA r | MIFF r | PEF r/w | THM r/w
4091
+ AVI r | FLAC r | MKA r | PFA r | TIFF r/w
4092
+ AZW r | FLIF r/w | MKS r | PFB r | TORRENT r
4093
+ BMP r | FLV r | MKV r | PFM r | TTC r
4094
+ BPG r | FPF r | MNG r/w | PGF r | TTF r
4095
+ BTF r | FPX r | MOBI r | PGM r/w | VCF r
4096
+ CHM r | GIF r/w | MODD r | PLIST r | VRD r/w/c
4097
+ COS r | GZ r | MOI r | PICT r | VSD r
4098
+ CR2 r/w | HDP r/w | MOS r/w | PMP r | WAV r
4099
+ CRW r/w | HDR r | MOV r/w | PNG r/w | WDP r/w
4100
+ CS1 r/w | HEIC r | MP3 r | PPM r/w | WEBP r
4101
+ DCM r | HEIF r | MP4 r/w | PPT r | WEBM r
4102
+ DCP r/w | HTML r | MPC r | PPTX r | WMA r
4103
+ DCR r | ICC r/w/c | MPG r | PS r/w | WMV r
4104
+ DFONT r | ICS r | MPO r/w | PSB r/w | WV r
4105
+ DIVX r | IDML r | MQV r/w | PSD r/w | X3F r/w
4106
+ DJVU r | IIQ r/w | MRW r/w | PSP r | XCF r
4107
+ DLL r | IND r/w | MXF r | QTIF r/w | XLS r
4108
+ DNG r/w | INX r | NEF r/w | RA r | XLSX r
4109
+ DOC r | ISO r | NRW r/w | RAF r/w | XMP r/w/c
4110
+ DOCX r | ITC r | NUMBERS r | RAM r | ZIP r
4111
+ DPX r | J2C r | O r | RAR r |
4112
+ DR4 r/w/c | JNG r/w | ODP r | RAW r/w |
4113
+ DSS r | JP2 r/w | ODS r | RIFF r |
4114
+ DV r | JPEG r/w | ODT r | RSRC r |
4113
4115
 
4114
4116
  Meta Information
4115
4117
  ----------------------+----------------------+---------------------
@@ -4419,8 +4421,9 @@ single file. In this case, C<@> may be used to represent the source file
4419
4421
  processing multiple files. Specified tags are then copied from each file in
4420
4422
  turn as it is rewritten. For advanced batch use, the source file name may
4421
4423
  also be specified using a I<FMT> string in which %d, %f and %e represent the
4422
- directory, file name and extension of I<FILE>. See B<-w> option for I<FMT>
4423
- string examples.
4424
+ directory, file name and extension of I<FILE>. (eg. the current I<FILE>
4425
+ would be represented by C<%d%f.%e>, with the same effect as C<@>). See the
4426
+ B<-w> option for I<FMT> string examples.
4424
4427
 
4425
4428
  A powerful redirection feature allows a destination tag to be specified for
4426
4429
  each copied tag. With this feature, information may be written to a tag
@@ -4486,13 +4489,13 @@ this command:
4486
4489
  This is significant in the case where an overlap exists between the copied
4487
4490
  and assigned tags because later operations may override earlier ones.
4488
4491
 
4489
- 5) The normal behaviour of copied tags differs subtly from that of assigned
4490
- tags for list-type tags. When copying to a list, each copied tag overrides
4491
- any previous operations on the list. While this avoids duplicate list items
4492
- when copying groups of tags from a file containing redundant information, it
4493
- also prevents values of different tags from being copied into the same list
4494
- when this is the intent. So a B<-addTagsFromFile> option is provided which
4495
- allows copying of multiple tags into the same list. eg)
4492
+ 5) The normal behaviour of copied tags differs from that of assigned tags
4493
+ for list-type tags and conditional replacements because each copy operation
4494
+ on a tag overrides any previous operations. While this avoids duplicate
4495
+ list items when copying groups of tags from a file containing redundant
4496
+ information, it also prevents values of different tags from being copied
4497
+ into the same list when this is the intent. So a B<-addTagsFromFile> option
4498
+ is provided which allows copying of multiple tags into the same list. eg)
4496
4499
 
4497
4500
  exiftool -addtagsfromfile @ '-subject<make' '-subject<model' ...
4498
4501
 
@@ -4613,6 +4616,8 @@ values are:
4613
4616
  Baltic cp1257 Windows Baltic
4614
4617
  Vietnam cp1258 Windows Vietnamese
4615
4618
  Thai cp874 Windows Thai
4619
+ DOSLatinUS cp437 DOS Latin US
4620
+ DOSLatin1 cp850 DOS Latin1
4616
4621
  MacRoman cp10000, Roman Macintosh Roman
4617
4622
  MacLatin2 cp10029 Macintosh Latin2 (Central Europe)
4618
4623
  MacCyrillic cp10007 Macintosh Cyrillic
@@ -4852,8 +4857,8 @@ variable-width character set.
4852
4857
  For list-type tags, this causes only the item with the specified index to be
4853
4858
  extracted. I<INDEX> is 0 for the first item in the list. Negative indices
4854
4859
  may also be used to reference items from the end of the list. Has no effect
4855
- on single-valued tags. Also applies to tag values when copying, and in
4856
- B<-if> conditions.
4860
+ on single-valued tags. Also applies to tag values when copying from a tag,
4861
+ and in B<-if> conditions.
4857
4862
 
4858
4863
  =item B<-n> (B<--printConv>)
4859
4864
 
@@ -4909,7 +4914,7 @@ with this command:
4909
4914
 
4910
4915
  produces output like this:
4911
4916
 
4912
- -- Generated by ExifTool 10.58 --
4917
+ -- Generated by ExifTool 10.65 --
4913
4918
  File: a.jpg - 2003:10:31 15:44:19
4914
4919
  (f/5.6, 1/60s, ISO 100)
4915
4920
  File: b.jpg - 2006:05:23 11:57:38
@@ -5040,12 +5045,13 @@ include the leading '.'. For example:
5040
5045
  -w dir2/%d%f.txt # write to "dir2", keeping dir structure
5041
5046
  -w a%c.txt # write to "a.txt" or "a1.txt" or "a2.txt"...
5042
5047
 
5043
- Existing files will not be overwritten unless an exclamation point is added
5044
- to the option name (ie. B<-w!> or B<-textOut!>), or a plus sign to append to
5045
- the existing file (ie. B<-w+> or B<-textOut+>). Both may be used (ie.
5046
- B<-w+!> or B<-textOut+!>) to overwrite output files that didn't exist before
5047
- the command was run, and append the output from multiple source files. For
5048
- example, to write one output file for all source files in each directory:
5048
+ Existing files will not be changed unless an exclamation point is added to
5049
+ the option name (ie. B<-w!> or B<-textOut!>) to overwrite the file, or a
5050
+ plus sign (ie. B<-w+> or B<-textOut+>) to append to the existing file. Both
5051
+ may be used (ie. B<-w+!> or B<-textOut+!>) to overwrite output files that
5052
+ didn't exist before the command was run, and append the output from multiple
5053
+ source files. For example, to write one output file for all source files in
5054
+ each directory:
5049
5055
 
5050
5056
  exiftool -filename -createdate -T -w+! %d/out.txt -r DIR
5051
5057
 
@@ -5245,9 +5251,9 @@ especially for PDF files with many embedded images.
5245
5251
  Process only files with (B<-ext>) or without (B<--ext>) a specified
5246
5252
  extension. There may be multiple B<-ext> and B<--ext> options. A plus sign
5247
5253
  may be added (ie. B<-ext+>) to add the specified extension to the normally
5248
- processed files. EXT may begin with a leading '.', and case is not
5249
- significant. C<"*"> may be used to process files with any extension (or
5250
- none at all), as in the last three examples:
5254
+ processed files. EXT may begin with a leading '.', which is ignored. Case
5255
+ is not significant. C<"*"> may be used to process files with any extension
5256
+ (or none at all), as in the last three examples:
5251
5257
 
5252
5258
  exiftool -ext JPG DIR # process only JPG files
5253
5259
  exiftool --ext cr2 --ext dng DIR # supported files but CR2/DNG
@@ -32,6 +32,11 @@ $VERSION = '1.05';
32
32
  Title => { },
33
33
  Track => { },
34
34
  Year => { },
35
+ DURATION => {
36
+ Name => 'Duration',
37
+ ValueConv => '$val += 4294967296 if $val < 0 and $val >= -2147483648; $val * 1e-7',
38
+ PrintConv => 'ConvertDuration($val)',
39
+ },
35
40
  'Tool Version' => { Name => 'ToolVersion' },
36
41
  'Tool Name' => { Name => 'ToolName' },
37
42
  );