exiftool_vendored 11.71.0 → 11.75.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +39 -0
  3. data/bin/MANIFEST +17 -4
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +23 -26
  7. data/bin/config_files/convert_regions.config +139 -5
  8. data/bin/exiftool +21 -21
  9. data/bin/fmt_files/gpx.fmt +2 -1
  10. data/bin/fmt_files/gpx_wpt.fmt +2 -1
  11. data/bin/fmt_files/kml.fmt +2 -2
  12. data/bin/fmt_files/kml_track.fmt +46 -0
  13. data/bin/lib/Image/ExifTool.pm +42 -33
  14. data/bin/lib/Image/ExifTool.pod +21 -21
  15. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
  16. data/bin/lib/Image/ExifTool/Canon.pm +2 -1
  17. data/bin/lib/Image/ExifTool/CanonCustom.pm +30 -4
  18. data/bin/lib/Image/ExifTool/Exif.pm +36 -63
  19. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -0
  20. data/bin/lib/Image/ExifTool/Lang/ru.pm +4233 -503
  21. data/bin/lib/Image/ExifTool/MakerNotes.pm +6 -12
  22. data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
  23. data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
  24. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Parrot.pm +751 -0
  26. data/bin/lib/Image/ExifTool/Photoshop.pm +12 -11
  27. data/bin/lib/Image/ExifTool/QuickTime.pm +18 -5
  28. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +316 -44
  29. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -2
  30. data/bin/lib/Image/ExifTool/Sigma.pm +72 -55
  31. data/bin/lib/Image/ExifTool/TagLookup.pm +73 -7
  32. data/bin/lib/Image/ExifTool/TagNames.pod +249 -18
  33. data/bin/lib/Image/ExifTool/Text.pm +160 -0
  34. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -2
  35. data/bin/lib/Image/ExifTool/Writer.pl +1 -1
  36. data/bin/lib/Image/ExifTool/XMP.pm +19 -26
  37. data/bin/lib/Image/ExifTool/XMP2.pl +46 -9
  38. data/bin/lib/Image/ExifTool/XMPStruct.pl +14 -4
  39. data/bin/perl-Image-ExifTool.spec +19 -19
  40. data/lib/exiftool_vendored/version.rb +1 -1
  41. metadata +6 -7
  42. data/bin/config_files/blueskysea.config +0 -101
  43. data/bin/config_files/dji.config +0 -131
  44. data/bin/config_files/mini0806.config +0 -99
  45. data/bin/config_files/thinkware.config +0 -144
@@ -1,131 +0,0 @@
1
- #------------------------------------------------------------------------------
2
- # File: dji.config
3
- #
4
- # Description: This config file defines Composite tags to convert embedded
5
- # metadata in videos from DJI drones
6
- #
7
- # Usage: exiftool -config dji.config -ee FILE
8
- #
9
- # Example command to create .gpx log file from DJI video
10
- # (requires gpx.fmt available in the full Exiftool distribution):
11
- #
12
- # exiftool -config dji.config -p gpx.fmt -ee -api QuickTimeUTC FILE
13
- #
14
- # Requires: ExifTool version 10.75 or later
15
- #
16
- # Revisions: 2018/03/23 - P. Harvey Created
17
- #------------------------------------------------------------------------------
18
-
19
- %Image::ExifTool::UserDefined = (
20
- 'Image::ExifTool::Composite' => {
21
- GROUPS => { 2 => 'Location' },
22
- #
23
- # Example embedded "Text" from a DJI FC6310:
24
- #
25
- # "F/3.5, SS 1000, ISO 100, EV 0, GPS (8.6499, 53.1665, 18), D 24.26m,
26
- # H 6.00m, H.S 2.10m/s, V.S 0.00m/s \n"
27
- #
28
- # F/ = F Number
29
- # SS = shutter speed
30
- # ISO = ISO
31
- # GPS = (longitude, latitude, ???)
32
- # D = horizontal distance from home point
33
- # H = vertical distance from home point
34
- # H.S = horizontal speed
35
- # V.S = vertical speed
36
- #
37
- # Note: SubDoc flag is set for all these tags so they will be generated for
38
- # all embedded documents
39
- #
40
- GPSDateTime => {
41
- Description => 'GPS Date/Time',
42
- Groups => { 2 => 'Time' },
43
- SubDoc => 1,
44
- Require => {
45
- 0 => 'Text',
46
- 1 => 'SampleTime',
47
- 2 => 'Main:CreateDate',
48
- 3 => 'Main:Duration',
49
- },
50
- # (assuming CreateDate is the end time of the video, we subtract
51
- # Duration because a SampleTime of zero is at the start of the video)
52
- ValueConv => q{
53
- my $diff = $val[1] - $val[3];
54
- my $sign = $diff =~ s/^-// ? '-' : '';
55
- my $time = $val[2] . '.000';
56
- ShiftTime($time, "${sign}0:0:$diff");
57
- return $time;
58
- },
59
- PrintConv => '$self->ConvertDateTime($val)',
60
- },
61
- GPSLatitude => {
62
- SubDoc => 1,
63
- Require => { 0 => 'Text' },
64
- RawConv => '$val[0] =~ /GPS \(\S+,\s*([-+]?\d*\.\d+)/ ? $1 : undef',
65
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
66
- },
67
- GPSLongitude => {
68
- SubDoc => 1,
69
- Require => { 0 => 'Text' },
70
- RawConv => '$val[0] =~ /GPS \(([-+]?\d*\.\d+),/ ? $1 : undef',
71
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
72
- },
73
- GPSAltitude => {
74
- SubDoc => 1,
75
- Require => { 0 => 'Text' },
76
- RawConv => '$val[0] =~ /,\s*H\s+([-+]?\d+\.?\d*)m/ ? $1 : undef',
77
- },
78
- GPSSpeed => {
79
- SubDoc => 1,
80
- Require => { 0 => 'Text' },
81
- RawConv => '$val[0] =~ /,\s*H.S\s+([-+]?\d+\.?\d*)/ ? $1 * 3.6 : undef',
82
- },
83
- GPSSpeedRef => {
84
- SubDoc => 1,
85
- Require => { 0 => 'Text' },
86
- RawConv => '$val[0] =~ /,\s*H.S\s+([-+]?\d+\.?\d*)m\/s/ ? "K" : undef',
87
- PrintConv => { K => 'km/h', M => 'mph', N => 'knots' },
88
- },
89
- Distance => {
90
- SubDoc => 1,
91
- Require => { 0 => 'Text' },
92
- RawConv => '$val[0] =~ /,\s*D\s+(\d+\.?\d*)m/ ? $1 * 3.6 : undef',
93
- PrintConv => '"$val m"',
94
- },
95
- VerticalSpeed => {
96
- SubDoc => 1,
97
- Require => { 0 => 'Text' },
98
- RawConv => '$val[0] =~ /,\s*V.S\s+([-+]?\d+\.?\d*)/ ? $1 : undef',
99
- PrintConv => '"$val m/s"',
100
- },
101
- FNumber => {
102
- Groups => { 2 => 'Camera' },
103
- SubDoc => 1,
104
- Require => { 0 => 'Text' },
105
- RawConv => '$val[0] =~ /\bF\/(\d+\.?\d*)/ ? $1 : undef',
106
- PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
107
- },
108
- ExposureTime => {
109
- Groups => { 2 => 'Camera' },
110
- SubDoc => 1,
111
- Require => { 0 => 'Text' },
112
- RawConv => '$val[0] =~ /\bSS\s+(\d+\.?\d*)/ ? 1/$1 : undef',
113
- PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
114
- },
115
- ExposureCompensation => {
116
- Groups => { 2 => 'Camera' },
117
- SubDoc => 1,
118
- Require => { 0 => 'Text' },
119
- RawConv => '$val[0] =~ /\bEV\s+([-+]?\d+\.?\d*)(\/\d+)?/ ? ($1 / ($2 || 1)) : undef',
120
- PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
121
- },
122
- ISO => {
123
- Groups => { 2 => 'Camera' },
124
- SubDoc => 1,
125
- Require => { 0 => 'Text' },
126
- RawConv => '$val[0] =~ /\bISO\s+(\d+\.?\d*)/ ? $1 : undef',
127
- },
128
- },
129
- );
130
-
131
- 1; #end
@@ -1,99 +0,0 @@
1
- #------------------------------------------------------------------------------
2
- # File: mini0806.config
3
- #
4
- # Description: This config file defines Composite tags to convert embedded
5
- # metadata in Mini 0806 dashcam videos
6
- #
7
- # Usage: exiftool -config mini0806.config -ee FILE
8
- #
9
- # Example command to create .gpx log file from Mini 0806 video
10
- # (requires gpx.fmt available in the full Exiftool distribution):
11
- #
12
- # exiftool -config mini0806.config -p gpx.fmt -ee FILE
13
- #
14
- # Requires: ExifTool version 10.75 or later
15
- #
16
- # Revisions: 2019/05/28 - P. Harvey Created
17
- #------------------------------------------------------------------------------
18
-
19
- %Image::ExifTool::UserDefined = (
20
- 'Image::ExifTool::Composite' => {
21
- GROUPS => { 2 => 'Location' },
22
- #
23
- # Example embedded "Text" from a Mini 0806 MOV video:
24
- #
25
- # "A,270519,201555.000,3356.8925,N,08420.2071,W,000.0,331.0M,+01.84,-09.80,-00.61;\n"
26
- #
27
- # Note: SubDoc flag is set for all these tags so they will be generated for
28
- # all embedded documents
29
- #
30
- GPSDateTime => {
31
- Description => 'GPS Date/Time',
32
- Groups => { 2 => 'Time' },
33
- SubDoc => 1,
34
- Require => 'Text',
35
- RawConv => q{
36
- if ($val[0] =~ /^A,(\d{2})(\d{2})(\d{2}),(\d{2})(\d{2})(\d{2}(\.\d+)?)/) {
37
- return "20$3:$2:$1 $4:$5:$6Z";
38
- } else {
39
- return undef;
40
- }
41
- },
42
- PrintConv => '$self->ConvertDateTime($val)',
43
- },
44
- GPSLatitude => {
45
- SubDoc => 1,
46
- Require => 'Text',
47
- RawConv => q{
48
- if ($val[0] =~ /^A,.*?,.*?,(\d{2})(\d+\.\d+),([NS])/) {
49
- return ($1 + $2/60) * ($3 eq 'S' ? -1 : 1);
50
- } else {
51
- return undef;
52
- }
53
- },
54
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
55
- },
56
- GPSLongitude => {
57
- SubDoc => 1,
58
- Require => 'Text',
59
- RawConv => q{
60
- if ($val[0] =~ /^A,.*?,.*?,.*?,.*?,(\d{3})(\d+\.\d+),([EW])/) {
61
- return ($1 + $2/60) * ($3 eq 'W' ? -1 : 1);
62
- } else {
63
- return undef;
64
- }
65
- },
66
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
67
- },
68
- GPSAltitude => {
69
- SubDoc => 1,
70
- Require => 'Text',
71
- RawConv => q{
72
- my @a = split ',', $val[0];
73
- return undef unless $a[0] eq 'A' and $a[8] =~ s/M$//;
74
- return $a[8];
75
- },
76
- PrintConv => '"$val m"',
77
- },
78
- GPSSpeed => {
79
- SubDoc => 1,
80
- Require => 'Text',
81
- RawConv => q{
82
- my @a = split ',', $val[0];
83
- return undef unless $a[0] eq 'A' and $a[7] =~ /^\d+\.\d+$/;
84
- return $a[7]; # (NC)
85
- },
86
- },
87
- Accelerometer => {
88
- SubDoc => 1,
89
- Require => 'Text',
90
- RawConv => q{
91
- my @a = split ',', $val[0];
92
- return undef unless $a[11] =~ s/;\s*$//;
93
- return "$a[9] $a[10] $a[11]";
94
- },
95
- },
96
- },
97
- );
98
-
99
- 1; #end
@@ -1,144 +0,0 @@
1
- #------------------------------------------------------------------------------
2
- # File: thinkware.config
3
- #
4
- # Description: This config file defines Composite tags to decode subtitle text
5
- # from Thinkware dashcam videos
6
- #
7
- # Usage: exiftool -config thinkware.config -ee FILE
8
- #
9
- # Example command to create .gpx log file from Thinkware video
10
- # (requires gpx.fmt available in the full Exiftool distribution):
11
- #
12
- # exiftool -config thinkware.config -p gpx.fmt -ee -api QuickTimeUTC FILE
13
- #
14
- # Requires: ExifTool version 10.75 or later
15
- #
16
- # Revisions: 2019/09/30 - P. Harvey Created
17
- #------------------------------------------------------------------------------
18
-
19
- use Time::Local;
20
-
21
- #------------------------------------------------------------------------------
22
- # Decode GPS from Thinkware subtitle Text
23
- # Inputs: 0) ExifTool ref, 1) Text value
24
- # Returns: Hash containing GPS tags
25
- sub Image::ExifTool::UserDefined::DecodeGPS($$)
26
- {
27
- my ($et, $val) = @_;
28
- unless ($$et{ThinkwareInfo}{Text} and $val eq $$et{ThinkwareInfo}{Text}) {
29
- my %gps;
30
- $$et{ThinkwareInfo}{GPS} = \%gps;
31
- $$et{ThinkwareInfo}{Text} = $val;
32
- #
33
- # Example embedded "Text" from a Thinkware Q800:
34
- #
35
- # "gsensori,4,512,-67,-12,100;GNRMC,161313.00,A,4529.87489,N,07337.01215,W,6.225,35.34,310819,,,A*52..;
36
- # CAR,0,0,0,0.0,0,0,0,0,0,0,0,0"
37
- #
38
- if ($val =~ /[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ and
39
- # do some basic sanity checks on the date
40
- $13 <= 31 and $14 <= 12 and $15 <= 99)
41
- {
42
- $gps{lat} = (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1);
43
- $gps{lon} = (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1);
44
- $gps{speed} = $11 if length $11;
45
- $gps{track} = $12 if length $12;
46
- my $year = $15 + ($15 >= 70 ? 1900 : 2000);
47
- $gps{datetime} = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2dZ', $year, $14, $13, $1, $2, $3);
48
- }
49
- }
50
- return $$et{ThinkwareInfo}{GPS};
51
- }
52
-
53
- # Composite tags to decode information from subtitle Text
54
- %Image::ExifTool::UserDefined = (
55
- 'Image::ExifTool::Composite' => {
56
- GROUPS => { 2 => 'Location' },
57
- #
58
- # Note: SubDoc flag is set for all these tags so they will be generated for
59
- # all embedded documents
60
- #
61
- GPSDateTime => {
62
- Description => 'GPS Date/Time',
63
- Groups => { 2 => 'Time' },
64
- SubDoc => 1,
65
- Require => 'Text',
66
- RawConv => q{
67
- my $gps = Image::ExifTool::UserDefined::DecodeGPS($self, $val[0]);
68
- return $$gps{datetime};
69
- },
70
- PrintConv => '$self->ConvertDateTime($val)',
71
- },
72
- GPSLatitude => {
73
- SubDoc => 1,
74
- Require => 'Text',
75
- RawConv => q{
76
- my $gps = Image::ExifTool::UserDefined::DecodeGPS($self, $val[0]);
77
- return $$gps{lat};
78
- },
79
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
80
- },
81
- GPSLongitude => {
82
- SubDoc => 1,
83
- Require => 'Text',
84
- RawConv => q{
85
- my $gps = Image::ExifTool::UserDefined::DecodeGPS($self, $val[0]);
86
- return $$gps{lon};
87
- },
88
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
89
- },
90
- GPSSpeed => {
91
- SubDoc => 1,
92
- Require => 'Text',
93
- RawConv => q{
94
- my $gps = Image::ExifTool::UserDefined::DecodeGPS($self, $val[0]);
95
- # convert from knots to km/hr
96
- return defined $$gps{speed} ? $$gps{speed} * 1.852 : undef;
97
- },
98
- },
99
- GPSSpeedRef => {
100
- SubDoc => 1,
101
- Require => 'Text',
102
- RawConv => q{
103
- my $gps = Image::ExifTool::UserDefined::DecodeGPS($self, $val[0]);
104
- return defined $$gps{speed} ? 'K' : undef;
105
- },
106
- PrintConv => { K => 'km/h', M => 'mph', N => 'knots' },
107
- },
108
- GPSTrack => {
109
- SubDoc => 1,
110
- Require => 'Text',
111
- RawConv => q{
112
- my $gps = Image::ExifTool::UserDefined::DecodeGPS($self, $val[0]);
113
- return $$gps{track};
114
- },
115
- },
116
- GPSTrackRef => {
117
- SubDoc => 1,
118
- Require => 'Text',
119
- RawConv => q{
120
- my $gps = Image::ExifTool::UserDefined::DecodeGPS($self, $val[0]);
121
- return defined $$gps{track} ? 'T' : undef;
122
- },
123
- PrintConv => { M => 'Magnetic North', T => 'True North' },
124
- },
125
- GSensor => {
126
- SubDoc => 1,
127
- Require => 'Text',
128
- RawConv => q{
129
- return undef unless $val[0] =~ /gsensori,(.*?)(;|$)/;
130
- return $1;
131
- },
132
- },
133
- Car => {
134
- SubDoc => 1,
135
- Require => 'Text',
136
- RawConv => q{
137
- return undef unless $val[0] =~ /CAR,(.*?)(;|$)/;
138
- return $1;
139
- },
140
- },
141
- },
142
- );
143
-
144
- 1; #end