multi_exiftool 0.13.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae8854c3ecd3b7d994ee26ac7ec90fdac4611143fd50fba1d96d1557a4e4ff2c
4
- data.tar.gz: 66714930cb460368f930dbc655c4dfbd502d0e45b371f21786fe3d4c6c124e0c
3
+ metadata.gz: 52fde3f1ec2afcca37970b15b006910cfe5204fb309d09d2fed6aaf1058f6d99
4
+ data.tar.gz: fe392422e2a5076648d8b8995cbb7cc15cb1a42c340948ba5670ab713a9426f5
5
5
  SHA512:
6
- metadata.gz: a0783ca4711efe4a88dd30a23a10ab357d250ada9d8fae6474cbe5356d6fc59e88743868449495bb36efaf8f65d4db1eaff889b07903fdb4fc5f64d3b2813866
7
- data.tar.gz: 9c91eb43576561b7dc712f3d0b05bda741fd2c4fb6f3542d7a56204cec09d2543e4d301060b66f3deb5a1b07c49537f32dcb4d0c5b869ec91b695b1409c035db
6
+ metadata.gz: 6d53477588cd9280322452eff83a8c31e12c878afeaac0462374f138cb05289a4a963fc373528f7efbfdd475609444d9b090d4a81c54a48b1fbec074cd5a808a
7
+ data.tar.gz: 5b0c7b775164a0032a2da1f2896c354bc32df822c85ffda2e1a36544fac88abc1044bb437395bea4adfee0915d50568fa360b75c3e12953c82a6b91b9bfe80aa
data/Changelog CHANGED
@@ -1,3 +1,6 @@
1
+ 0.14.0
2
+ Improve api for batch processing.
3
+
1
4
  0.13.0
2
5
  Implement batch processing to allow to write different values to multiple file
3
6
  with only one call of the ExifTool command-line application.
data/README.md CHANGED
@@ -66,11 +66,11 @@ If it is necessary to write different values to multiple files there is batch pr
66
66
  require 'multi_exiftool'
67
67
 
68
68
  # Object oriented approach
69
- batch = Batch.new do
70
- Dir['*.jpg'].each_with_index do |filename, i|
71
- values = {creator: 'Jan Friedrich', copyright: 'Public Domain', comment: "This is file number #{i+1}."}
72
- write filename, values
73
- end
69
+
70
+ batch = MultiExiftool::Batch.new
71
+ Dir['*.jpg'].each_with_index do |filename, i|
72
+ values = {creator: 'Jan Friedrich', copyright: 'Public Domain', comment: "This is file number #{i+1}."}
73
+ batch.write filename, values
74
74
  end
75
75
  if batch.execute
76
76
  puts 'ok'
@@ -79,6 +79,7 @@ else
79
79
  end
80
80
 
81
81
  # Functional approach
82
+
82
83
  errors = MultiExiftool.batch do
83
84
  Dir['*.jpg'].each_with_index do |filename, i|
84
85
  values = {creator: 'Jan Friedrich', copyright: 'Public Domain', comment: "This is file number #{i+1}."}
@@ -88,7 +89,21 @@ end
88
89
  if errors.empty?
89
90
  puts 'ok'
90
91
  else
91
- puts batch.errors
92
+ puts errors
93
+ end
94
+
95
+ # or alternative with block parameter as yielded Batch instance
96
+
97
+ errors = MultiExiftool.batch do |batch|
98
+ Dir['*.jpg'].each_with_index do |filename, i|
99
+ values = {creator: 'Jan Friedrich', copyright: 'Public Domain', comment: "This is file number #{i+1}."}
100
+ batch.write filename, values
101
+ end
102
+ end
103
+ if errors.empty?
104
+ puts 'ok'
105
+ else
106
+ puts errors
92
107
  end
93
108
  ```
94
109
 
@@ -8,7 +8,7 @@ require_relative 'multi_exiftool/batch'
8
8
 
9
9
  module MultiExiftool
10
10
 
11
- VERSION = '0.13.0'
11
+ VERSION = '0.14.0'
12
12
 
13
13
  @exiftool_command = 'exiftool'
14
14
 
@@ -78,7 +78,12 @@ module MultiExiftool
78
78
  # # do error handling
79
79
  # end
80
80
  def batch &block
81
- batch = Batch.new &block
81
+ batch = Batch.new
82
+ if block.arity == 0
83
+ batch.instance_exec &block
84
+ else
85
+ yield batch
86
+ end
82
87
  batch.execute
83
88
  batch.errors
84
89
  end
@@ -14,7 +14,7 @@ module MultiExiftool
14
14
  # Define batch operation inside a block
15
15
  def initialize &blk
16
16
  @writers = []
17
- instance_exec &blk
17
+ instance_exec &blk if block_given?
18
18
  end
19
19
 
20
20
  # Define a write operation for the batch.
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: multi_exiftool 0.13.0 ruby lib
2
+ # stub: multi_exiftool 0.14.0 ruby lib
3
3
  #
4
4
  # This file is automatically generated by rim.
5
5
  # PLEASE DO NOT EDIT IT DIRECTLY!
@@ -7,12 +7,12 @@
7
7
 
8
8
  Gem::Specification.new do |s|
9
9
  s.name = "multi_exiftool"
10
- s.version = "0.13.0"
10
+ s.version = "0.14.0"
11
11
 
12
12
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
13
13
  s.require_paths = ["lib"]
14
14
  s.authors = ["Jan Friedrich"]
15
- s.date = "2020-02-03"
15
+ s.date = "2020-02-04"
16
16
  s.description = "This library a is wrapper for the ExifTool command-line application (https://exiftool.org) written by Phil Harvey. It is designed for dealing with multiple files at once by creating commands to call exiftool with various arguments, call it and parsing the results."
17
17
  s.email = "janfri26@gmail.com"
18
18
  s.files = ["./.aspell.pws", "Changelog", "Gemfile", "LICENSE", "README.md", "Rakefile", "lib/multi_exiftool", "lib/multi_exiftool.rb", "lib/multi_exiftool/batch.rb", "lib/multi_exiftool/executable.rb", "lib/multi_exiftool/reader.rb", "lib/multi_exiftool/values.rb", "lib/multi_exiftool/writer.rb", "multi_exiftool.gemspec", "regtest/read_all_tags.rb", "regtest/read_all_tags.yml", "regtest/test.jpg", "test/data", "test/data/a.jpg", "test/data/b.jpg", "test/data/c.jpg", "test/helper.rb", "test/test_batch.rb", "test/test_executable.rb", "test/test_exiftool_stuff.rb", "test/test_functional_api.rb", "test/test_reader.rb", "test/test_values.rb", "test/test_values_using_groups.rb", "test/test_writer.rb", "test/test_writer_groups.rb"]
@@ -4,7 +4,7 @@ result:
4
4
  - - !ruby/object:MultiExiftool::Values
5
5
  values:
6
6
  sourcefile: regtest/test.jpg
7
- exiftoolversion: 11.7
7
+ exiftoolversion: 11.85
8
8
  filename: test.jpg
9
9
  directory: regtest
10
10
  filesize: 43 kB
@@ -17,29 +17,23 @@ class TestBatch < Test::Unit::TestCase
17
17
  end
18
18
 
19
19
  test 'only filenames and values' do
20
- filenames = @filenames
21
- multiple_values = @multiple_values
22
- batch = MultiExiftool::Batch.new do
23
- filenames.zip multiple_values do |filename, values|
24
- write filename, values
25
- end
20
+ batch = MultiExiftool::Batch.new
21
+ @filenames.zip @multiple_values do |filename, values|
22
+ batch.write filename, values
26
23
  end
27
- exiftool_args = filenames.zip(multiple_values).map do |filename, values|
24
+ exiftool_args = @filenames.zip(@multiple_values).map do |filename, values|
28
25
  [MANDATORY_WRITER_ARGS, '-author=janfri', "-comment=Comment for file #{filename}", filename, '-execute']
29
26
  end.flatten
30
27
  assert_equal exiftool_args, batch.exiftool_args
31
28
  end
32
29
 
33
30
  test 'filenames, values and options' do
34
- filenames = @filenames
35
- multiple_values = @multiple_values
36
31
  options = {overwrite_original: true}
37
- batch = MultiExiftool::Batch.new do
38
- filenames.zip multiple_values do |filename, values|
39
- write filename, values, options
40
- end
32
+ batch = MultiExiftool::Batch.new
33
+ @filenames.zip @multiple_values do |filename, values|
34
+ batch.write filename, values, options
41
35
  end
42
- exiftool_args = filenames.zip(multiple_values).map do |filename, _values|
36
+ exiftool_args = @filenames.zip(@multiple_values).map do |filename, _values|
43
37
  [MANDATORY_WRITER_ARGS, '-overwrite_original', '-author=janfri', "-comment=Comment for file #{filename}", filename, '-execute']
44
38
  end.flatten
45
39
  assert_equal exiftool_args, batch.exiftool_args
@@ -189,6 +189,7 @@ class TestFunctionalApi < Test::Unit::TestCase
189
189
  end
190
190
 
191
191
  context 'batch' do
192
+
192
193
  setup do
193
194
  @filenames = %w(a.jpg b.jpg c.jpg)
194
195
  @multiple_values = @filenames.map do |fn|
@@ -196,41 +197,82 @@ class TestFunctionalApi < Test::Unit::TestCase
196
197
  end
197
198
  end
198
199
 
199
- test 'only filenames and values' do
200
- run_in_temp_dir do
201
- filenames = @filenames
202
- multiple_values = @multiple_values
203
- errors = MultiExiftool.batch do
204
- filenames.zip multiple_values do |filename, values|
205
- write filename, values
200
+ context 'instance_exec' do
201
+
202
+ test 'only filenames and values' do
203
+ run_in_temp_dir do
204
+ filenames = @filenames
205
+ multiple_values = @multiple_values
206
+ errors = MultiExiftool.batch do
207
+ filenames.zip multiple_values do |filename, values|
208
+ write filename, values
209
+ end
206
210
  end
211
+ assert_equal [], errors
212
+ values, errors = MultiExiftool.read(@filenames)
213
+ assert_equal ['Jan Friedrich'] * 3, values.map {|e| e['Author']}
214
+ assert_equal ['Comment for file a.jpg', 'Comment for file b.jpg', 'Comment for file c.jpg'], values.map {|e| e['Comment']}
215
+ assert_equal [], errors
216
+ assert_equal 3, Dir['*_original'].size
207
217
  end
208
- assert_equal [], errors
209
- values, errors = MultiExiftool.read(@filenames)
210
- assert_equal ['Jan Friedrich'] * 3, values.map {|e| e['Author']}
211
- assert_equal ['Comment for file a.jpg', 'Comment for file b.jpg', 'Comment for file c.jpg'], values.map {|e| e['Comment']}
212
- assert_equal [], errors
213
- assert_equal 3, Dir['*_original'].size
214
218
  end
219
+
220
+ test 'options with boolean argument' do
221
+ run_in_temp_dir do
222
+ filenames = @filenames
223
+ multiple_values = @multiple_values
224
+ options = {overwrite_original: true}
225
+ errors = MultiExiftool.batch do
226
+ filenames.zip multiple_values do |filename, values|
227
+ write filename, values, options
228
+ end
229
+ end
230
+ assert_equal [], errors
231
+ values, errors = MultiExiftool.read(@filenames)
232
+ assert_equal ['Jan Friedrich'] * 3, values.map {|e| e['Author']}
233
+ assert_equal ['Comment for file a.jpg', 'Comment for file b.jpg', 'Comment for file c.jpg'], values.map {|e| e['Comment']}
234
+ assert_equal [], errors
235
+ assert_equal [], Dir['*_original']
236
+ end
237
+ end
238
+
215
239
  end
216
240
 
217
- test 'options with boolean argument' do
218
- run_in_temp_dir do
219
- filenames = @filenames
220
- multiple_values = @multiple_values
221
- options = {overwrite_original: true}
222
- errors = MultiExiftool.batch do
223
- filenames.zip multiple_values do |filename, values|
224
- write filename, values, options
241
+ context 'yield' do
242
+
243
+ test 'only filenames and values' do
244
+ run_in_temp_dir do
245
+ errors = MultiExiftool.batch do |batch|
246
+ @filenames.zip @multiple_values do |filename, values|
247
+ batch.write filename, values
248
+ end
225
249
  end
250
+ assert_equal [], errors
251
+ values, errors = MultiExiftool.read(@filenames)
252
+ assert_equal ['Jan Friedrich'] * 3, values.map {|e| e['Author']}
253
+ assert_equal ['Comment for file a.jpg', 'Comment for file b.jpg', 'Comment for file c.jpg'], values.map {|e| e['Comment']}
254
+ assert_equal [], errors
255
+ assert_equal 3, Dir['*_original'].size
256
+ end
257
+ end
258
+
259
+ test 'options with boolean argument' do
260
+ run_in_temp_dir do
261
+ options = {overwrite_original: true}
262
+ errors = MultiExiftool.batch do |batch|
263
+ @filenames.zip @multiple_values do |filename, values|
264
+ batch.write filename, values, options
265
+ end
266
+ end
267
+ assert_equal [], errors
268
+ values, errors = MultiExiftool.read(@filenames)
269
+ assert_equal ['Jan Friedrich'] * 3, values.map {|e| e['Author']}
270
+ assert_equal ['Comment for file a.jpg', 'Comment for file b.jpg', 'Comment for file c.jpg'], values.map {|e| e['Comment']}
271
+ assert_equal [], errors
272
+ assert_equal [], Dir['*_original']
226
273
  end
227
- assert_equal [], errors
228
- values, errors = MultiExiftool.read(@filenames)
229
- assert_equal ['Jan Friedrich'] * 3, values.map {|e| e['Author']}
230
- assert_equal ['Comment for file a.jpg', 'Comment for file b.jpg', 'Comment for file c.jpg'], values.map {|e| e['Comment']}
231
- assert_equal [], errors
232
- assert_equal [], Dir['*_original']
233
274
  end
275
+
234
276
  end
235
277
 
236
278
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_exiftool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.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: 2020-02-03 00:00:00.000000000 Z
11
+ date: 2020-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake