mini_exiftool 2.0.0 → 2.1.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/Changelog +7 -0
- data/lib/mini_exiftool.rb +12 -16
- data/test/test_read.rb +4 -6
- data/test/test_read_coordinates.rb +4 -5
- data/test/test_save.rb +3 -9
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1912be3f9461bf694e7907689e59f190dd57b8e3
|
4
|
+
data.tar.gz: 936637b9820b7dfcde601b5a3651511e09735f05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3473fbaae4cf7b83d3e0ac540eb2929ae8ce49d28d2466584199f41ddbf8d8f432603e99db695349a73627de8fc9ec5ad4662528c9891beea133987e7661465a
|
7
|
+
data.tar.gz: d59167d91ce3b8d6ff5686d909a3d12e87a5861c9ea948fd814267e96a0c62c02b47725d08fb26bd37ffd1f63fc855442d7b6445cf71b964562fd21e9ca3db9b
|
data/Changelog
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
2.1.0
|
2
|
+
- insert require 'json'
|
3
|
+
- Drop option :convert_encoding (use Ruby String
|
4
|
+
methods instead)
|
5
|
+
- Make the test_access_coordinate work on different
|
6
|
+
exiftool version.
|
7
|
+
|
1
8
|
2.0.0
|
2
9
|
- Drop Ruby 1.8 compatibility.
|
3
10
|
- Using JSON to parse exiftool output (need
|
data/lib/mini_exiftool.rb
CHANGED
@@ -14,10 +14,11 @@
|
|
14
14
|
#
|
15
15
|
|
16
16
|
require 'fileutils'
|
17
|
-
require '
|
17
|
+
require 'json'
|
18
18
|
require 'pstore'
|
19
19
|
require 'rational'
|
20
20
|
require 'set'
|
21
|
+
require 'tempfile'
|
21
22
|
require 'time'
|
22
23
|
|
23
24
|
# Simple OO access to the Exiftool command-line application.
|
@@ -27,21 +28,22 @@ class MiniExiftool
|
|
27
28
|
@@cmd = 'exiftool'
|
28
29
|
|
29
30
|
# Hash of the standard options used when call MiniExiftool.new
|
30
|
-
@@opts = { :numerical => false, :composite => true, :
|
31
|
+
@@opts = { :numerical => false, :composite => true, :ignore_minor_errors => false, :timestamps => Time }
|
31
32
|
|
32
33
|
attr_reader :filename
|
33
|
-
attr_accessor :numerical, :composite, :
|
34
|
+
attr_accessor :numerical, :composite, :ignore_minor_errors, :errors, :timestamps
|
34
35
|
|
35
|
-
VERSION = '2.
|
36
|
+
VERSION = '2.1.0'
|
36
37
|
|
37
38
|
# +opts+ support at the moment
|
38
39
|
# * <code>:numerical</code> for numerical values, default is +false+
|
39
40
|
# * <code>:composite</code> for including composite tags while loading,
|
40
41
|
# default is +true+
|
41
|
-
# * <code>:convert_encoding</code> convert encoding (See -L-option of
|
42
|
-
# the exiftool command-line application, default is +false+)
|
43
42
|
# * <code>:ignore_minor_errors</code> ignore minor errors (See -m-option
|
44
43
|
# of the exiftool command-line application, default is +false+)
|
44
|
+
# * <code>:coord_format</code> set format for GPS coordinates (See
|
45
|
+
# -c-option of the exiftool command-line application, default is +nil+
|
46
|
+
# that means exiftool standard)
|
45
47
|
# * <code>:timestamps</code> generating DateTime objects instead of
|
46
48
|
# Time objects if set to <code>DateTime</code>, default is +Time+
|
47
49
|
#
|
@@ -52,7 +54,10 @@ class MiniExiftool
|
|
52
54
|
opts = @@opts.merge opts
|
53
55
|
@numerical = opts[:numerical]
|
54
56
|
@composite = opts[:composite]
|
55
|
-
|
57
|
+
if opts[:convert_encoding]
|
58
|
+
warn 'Option :convert_encoding is not longer supported!'
|
59
|
+
warn 'Please use the String#encod* methods.'
|
60
|
+
end
|
56
61
|
@ignore_minor_errors = opts[:ignore_minor_errors]
|
57
62
|
@timestamps = opts[:timestamps]
|
58
63
|
@coord_format = opts[:coord_format]
|
@@ -87,7 +92,6 @@ class MiniExiftool
|
|
87
92
|
opt_params = ''
|
88
93
|
opt_params << (@numerical ? '-n ' : '')
|
89
94
|
opt_params << (@composite ? '' : '-e ')
|
90
|
-
opt_params << (@convert_encoding ? '-L ' : '')
|
91
95
|
opt_params << (@coord_format ? "-c \"#{@coord_format}\"" : '')
|
92
96
|
cmd = %Q(#@@cmd -j -q -q -s -t #{opt_params} #{MiniExiftool.escape(filename)})
|
93
97
|
if run(cmd)
|
@@ -165,12 +169,8 @@ class MiniExiftool
|
|
165
169
|
end
|
166
170
|
opt_params = ''
|
167
171
|
opt_params << (arr_val.detect {|x| x.kind_of?(Numeric)} ? '-n ' : '')
|
168
|
-
opt_params << (@convert_encoding ? '-L ' : '')
|
169
172
|
opt_params << (@ignore_minor_errors ? '-m' : '')
|
170
173
|
cmd = %Q(#@@cmd -q -P -overwrite_original #{opt_params} #{tag_params} #{temp_filename})
|
171
|
-
if convert_encoding
|
172
|
-
cmd.encode!('ISO-8859-1')
|
173
|
-
end
|
174
174
|
result = run(cmd)
|
175
175
|
unless result
|
176
176
|
all_ok = false
|
@@ -332,9 +332,6 @@ class MiniExiftool
|
|
332
332
|
|
333
333
|
def perform_conversions(value)
|
334
334
|
return value unless value.kind_of?(String)
|
335
|
-
if convert_encoding
|
336
|
-
value.encode!('ISO-8859-1')
|
337
|
-
end
|
338
335
|
case value
|
339
336
|
when /^\d{4}:\d\d:\d\d \d\d:\d\d:\d\d/
|
340
337
|
s = value.sub(/^(\d+):(\d+):/, '\1-\2-')
|
@@ -371,7 +368,6 @@ class MiniExiftool
|
|
371
368
|
def set_attributes_by_heuristic
|
372
369
|
self.composite = tags.include?('ImageSize') ? true : false
|
373
370
|
self.numerical = self.file_size.kind_of?(Integer) ? true : false
|
374
|
-
# TODO: Is there a heuristic to determine @convert_encoding?
|
375
371
|
self.timestamps = self.FileModifyDate.kind_of?(DateTime) ? DateTime : Time
|
376
372
|
end
|
377
373
|
|
data/test/test_read.rb
CHANGED
@@ -40,12 +40,10 @@ class TestRead < TestCase
|
|
40
40
|
assert_equal ['Natur'], Array(@mini_exiftool['SupplementalCategories'])
|
41
41
|
end
|
42
42
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
assert_equal
|
47
|
-
converted = title_utf8.encode('ISO-8859-1')
|
48
|
-
assert_equal converted, @mini_exiftool_converted.title
|
43
|
+
def test_value_encoding
|
44
|
+
title= 'Abenddämmerung'
|
45
|
+
assert_equal Encoding::UTF_8, @mini_exiftool.title.encoding
|
46
|
+
assert_equal title, @mini_exiftool.title
|
49
47
|
end
|
50
48
|
|
51
49
|
end
|
@@ -9,11 +9,10 @@ class TestReadCoordinates < TestCase
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_access_coordinates
|
12
|
-
mini_exiftool_coord = MiniExiftool.new @filename_test, :coord_format => "
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
assert_equal '+43.653167, -79.373167', mini_exiftool_coord['GPSPosition']
|
12
|
+
mini_exiftool_coord = MiniExiftool.new @filename_test, :coord_format => "%.6f degrees"
|
13
|
+
assert_match /^43.653167 degrees/, mini_exiftool_coord['GPSLatitude']
|
14
|
+
assert_match /^79.373167 degrees/, mini_exiftool_coord['GPSLongitude']
|
15
|
+
assert_match /^43.653167 degrees.*, 79.373167 degrees/, mini_exiftool_coord['GPSPosition']
|
17
16
|
end
|
18
17
|
|
19
18
|
end
|
data/test/test_save.rb
CHANGED
@@ -49,19 +49,13 @@ class TestSave < TestCase
|
|
49
49
|
assert_equal @org_md5, Digest::MD5.hexdigest(File.read(@temp_filename))
|
50
50
|
end
|
51
51
|
|
52
|
-
def
|
52
|
+
def test_value_encoding
|
53
53
|
special_string = 'äöü'
|
54
|
-
special_string_latin1 = special_string.encode('ISO-8859-1')
|
55
54
|
@mini_exiftool.title = special_string
|
56
55
|
assert @mini_exiftool.save
|
57
|
-
|
56
|
+
@mini_exiftool.reload
|
57
|
+
assert_equal Encoding::UTF_8, @mini_exiftool.title.encoding
|
58
58
|
assert_equal special_string, @mini_exiftool.title
|
59
|
-
@mini_exiftool.convert_encoding = true
|
60
|
-
@mini_exiftool.title = special_string_latin1
|
61
|
-
assert @mini_exiftool.save
|
62
|
-
assert_equal true, @mini_exiftool.convert_encoding
|
63
|
-
special_string_latin1.encode!('ISO-8859-1')
|
64
|
-
assert_equal special_string_latin1, @mini_exiftool.title
|
65
59
|
end
|
66
60
|
|
67
61
|
def test_save_bang
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_exiftool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Friedrich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rim
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.7.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.7.0
|
27
27
|
description: ''
|
28
28
|
email: janfri26@gmail.com
|
29
29
|
executables: []
|