multi_exiftool 0.18.1 → 0.19.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c32c0754aa49fcb693d9c9f5b57cc97a8a12beb59cd7b68d58d02b33c86dc124
4
- data.tar.gz: 67b5fd97eb0a6659e632bcd7f703aaf3ca6b847fc678a0afadf79345870710c3
3
+ metadata.gz: c0c11e4d78ddfece60352716273188dbdb365174be7215d2df1136de2a938ab1
4
+ data.tar.gz: 8258baf1ae7de0dc1c2d9b633e51f06b7b5e07417713cbcbbdba99960c591027
5
5
  SHA512:
6
- metadata.gz: 5a238f428504a103a990003e2b10fd15f7d55b37a22f3f857a8bc90b66f0ad683e54d752be78f101f8a9527a9cc1c6b111ed330a8963ff1a2f3a7ecdf0a2971e
7
- data.tar.gz: 1ff4a6dfe8516e0183476a6d3b526f012d6fb94ca95f3f6a91eefa57039d7c3421fff9561bce59eb3d7d985a3ea389addb44a7ea9b34a2438b875d2fd52888ef
6
+ metadata.gz: 82db0ba81f5259a4aa7f16edaac6a7cc25eefc8779f512edcdacff51fc503e8a08548be381e0c2643ebfe3357f15eda569945129d70aae81c1539ddb88ca7fbc
7
+ data.tar.gz: 1155c81594420037d1e12c3086346d47ccba93fc0a3d5be0f264f1855ecc48441d2a54aee9d166735f6517e1da8b049ccb6c6f83c6e6fd4e36621972df0fee6a
data/Changelog CHANGED
@@ -1,3 +1,7 @@
1
+ 0.19.0
2
+ Maintenance release: Upgrade to rim 3.0 for development and minimize gem file
3
+ size.
4
+
1
5
  0.18.1
2
6
  Fix a bug with large output which causes the hanging when reading data.
3
7
 
@@ -0,0 +1,13 @@
1
+ require 'multi_exiftool'
2
+
3
+ if ARGV.empty?
4
+ $stderr.puts 'No filenames given.'
5
+ exit -1
6
+ end
7
+
8
+ reader = MultiExiftool::Reader.new
9
+ reader.filenames = ARGV
10
+ results = reader.read
11
+ results.each do |values|
12
+ puts "#{values.file_name}: #{values.comment}"
13
+ end
@@ -0,0 +1,19 @@
1
+ require 'multi_exiftool'
2
+
3
+ if ARGV.empty?
4
+ $stderr.puts 'No filenames given.'
5
+ exit -1
6
+ end
7
+
8
+ puts 'Please enter a comment for the given files:'
9
+ comment = $stdin.gets.chomp
10
+
11
+ writer = MultiExiftool::Writer.new
12
+ writer.filenames = ARGV
13
+ writer.overwrite_original = true
14
+ writer.values = {comment: comment}
15
+ if writer.write
16
+ puts 'ok'
17
+ else
18
+ puts writer.errors.join
19
+ end
@@ -0,0 +1,28 @@
1
+ require 'multi_exiftool'
2
+
3
+ if ARGV.empty?
4
+ $stderr.puts 'No filenames given.'
5
+ exit -1
6
+ end
7
+
8
+ reader = MultiExiftool::Reader.new
9
+ reader.filenames = ARGV
10
+ reader.group = 0
11
+ results = reader.read
12
+ results.each do |values|
13
+ # direct access
14
+ puts values.file.filename
15
+ # access via block without parameter
16
+ values.iptc do
17
+ self.keywords do
18
+ puts " Keywords (IPCT): #{Array(self).join(', ')}"
19
+ end
20
+ end
21
+ # access via block with parameter
22
+ values.xmp do |xmp|
23
+ xmp.keywords do |kw|
24
+ puts " Keywords (XMP): #{Array(kw).join(', ')}"
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,33 @@
1
+ require 'multi_exiftool'
2
+ require 'yaml'
3
+
4
+ if ARGV.empty?
5
+ $stderr.puts 'No filenames given.'
6
+ exit -1
7
+ end
8
+
9
+ puts 'Please enter a description for the given files:'
10
+ description = $stdin.gets.chomp
11
+
12
+ puts 'Please enter a caption for the given files:'
13
+ caption = $stdin.gets.chomp
14
+
15
+ writer = MultiExiftool::Writer.new
16
+ writer.filenames = ARGV
17
+
18
+ # specifying group by prefix
19
+ writer.values = {'exif:imagedescription' => description, 'xmp:description' => description}
20
+
21
+ # specifying group hierarchical
22
+ writer.values.merge! YAML.load <<-END
23
+ iptc:
24
+ caption-abstract: #{caption}
25
+ xmp:
26
+ caption: #{caption}
27
+ END
28
+
29
+ if writer.write
30
+ puts 'ok'
31
+ else
32
+ puts writer.errors.join
33
+ end
@@ -0,0 +1,35 @@
1
+ require 'multi_exiftool'
2
+
3
+ if ARGV.empty?
4
+ $stderr.puts 'No filenames given.'
5
+ exit -1
6
+ end
7
+
8
+ # Reading only the tags Orientation and Rotation using the -n option of exiftool
9
+ results, errors = MultiExiftool.read(ARGV, tags: %w[orientation rotation], numerical: true)
10
+
11
+ unless errors.empty?
12
+ $stderr.puts reader.errors
13
+ exit 1
14
+ end
15
+
16
+ # Ensuring that for all files with EXIF rotation value of 76 the EXIF value orientation is 6
17
+ # and for EXIF rotation value 82 the EXIF orientation value is 8
18
+
19
+ # Determine the filenames
20
+ update_orientation_to_6 = results.select {|r| r.rotation == 76 && r.orientation != 6}.map {|r| r.sourcefile}
21
+ update_orientation_to_8 = results.select {|r| r.rotation == 82 && r.orientation != 8}.map {|r| r.sourcefile}
22
+
23
+ # Update
24
+ errors = []
25
+ unless update_orientation_to_6.empty?
26
+ errors += MultiExiftool.write(update_orientation_to_6, {orientation: 6}, numerical: true, overwrite_original: true)
27
+ end
28
+ unless update_orientation_to_8.empty?
29
+ errors += MultiExiftool.write(update_orientation_to_8, {orientation: 8}, numerical: true, overwrite_original: true)
30
+ end
31
+
32
+ unless errors.empty?
33
+ $stderr.puts reader.errors
34
+ exit 1
35
+ end
@@ -8,7 +8,7 @@ require_relative 'multi_exiftool/batch'
8
8
 
9
9
  module MultiExiftool
10
10
 
11
- VERSION = '0.18.1'
11
+ VERSION = '0.19.0'
12
12
 
13
13
  @exiftool_command = 'exiftool'
14
14
 
metadata CHANGED
@@ -1,14 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_exiftool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.1
4
+ version: 0.19.0
5
5
  platform: ruby
6
+ original_platform: ''
6
7
  authors:
7
8
  - Jan Friedrich
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 2024-05-23 00:00:00.000000000 Z
11
+ date: 2024-11-23 00:00:00.000000000 Z
11
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: contest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.1'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fileutils
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.7.3
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.7.3
12
41
  - !ruby/object:Gem::Dependency
13
42
  name: rake
14
43
  requirement: !ruby/object:Gem::Requirement
@@ -24,33 +53,33 @@ dependencies:
24
53
  - !ruby/object:Gem::Version
25
54
  version: '0'
26
55
  - !ruby/object:Gem::Dependency
27
- name: rim
56
+ name: regtest
28
57
  requirement: !ruby/object:Gem::Requirement
29
58
  requirements:
30
59
  - - "~>"
31
60
  - !ruby/object:Gem::Version
32
- version: '2.17'
61
+ version: '2'
33
62
  type: :development
34
63
  prerelease: false
35
64
  version_requirements: !ruby/object:Gem::Requirement
36
65
  requirements:
37
66
  - - "~>"
38
67
  - !ruby/object:Gem::Version
39
- version: '2.17'
68
+ version: '2'
40
69
  - !ruby/object:Gem::Dependency
41
- name: contest
70
+ name: rim
42
71
  requirement: !ruby/object:Gem::Requirement
43
72
  requirements:
44
73
  - - "~>"
45
74
  - !ruby/object:Gem::Version
46
- version: '0.1'
75
+ version: '3.0'
47
76
  type: :development
48
77
  prerelease: false
49
78
  version_requirements: !ruby/object:Gem::Requirement
50
79
  requirements:
51
80
  - - "~>"
52
81
  - !ruby/object:Gem::Version
53
- version: '0.1'
82
+ version: '3.0'
54
83
  - !ruby/object:Gem::Dependency
55
84
  name: test-unit
56
85
  requirement: !ruby/object:Gem::Requirement
@@ -65,20 +94,6 @@ dependencies:
65
94
  - - ">="
66
95
  - !ruby/object:Gem::Version
67
96
  version: '0'
68
- - !ruby/object:Gem::Dependency
69
- name: regtest
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '2'
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '2'
82
97
  description: This library is a wrapper for the ExifTool command-line application (https://exiftool.org)
83
98
  written by Phil Harvey. It is designed for dealing with multiple files at once by
84
99
  creating commands to call exiftool with various arguments, call it and parsing the
@@ -88,46 +103,31 @@ executables: []
88
103
  extensions: []
89
104
  extra_rdoc_files: []
90
105
  files:
91
- - "./.aspell.pws"
92
106
  - Changelog
93
- - Gemfile
94
107
  - LICENSE
95
108
  - README.md
96
- - Rakefile
109
+ - examples/01_simple_reading.rb
110
+ - examples/02_simple_writing.rb
111
+ - examples/03_reading_using_groups.rb
112
+ - examples/04_writing_using_groups.rb
113
+ - examples/05_functional_api.rb
97
114
  - lib/multi_exiftool.rb
98
115
  - lib/multi_exiftool/batch.rb
99
116
  - lib/multi_exiftool/executable.rb
100
117
  - lib/multi_exiftool/reader.rb
101
118
  - lib/multi_exiftool/values.rb
102
119
  - lib/multi_exiftool/writer.rb
103
- - multi_exiftool.gemspec
104
- - regtest/read_all_tags.rb
105
- - regtest/read_all_tags.yml
106
- - regtest/test.jpg
107
- - test/data/a.jpg
108
- - test/data/b.jpg
109
- - test/data/c.jpg
110
- - test/data/example.config
111
- - test/helper.rb
112
- - test/test_batch.rb
113
- - test/test_executable.rb
114
- - test/test_exiftool_stuff.rb
115
- - test/test_functional_api.rb
116
- - test/test_reader.rb
117
- - test/test_values.rb
118
- - test/test_values_using_groups.rb
119
- - test/test_writer.rb
120
- - test/test_writer_groups.rb
121
120
  homepage: https://github.com/janfri/multi_exiftool
122
121
  licenses:
123
122
  - MIT
124
123
  metadata: {}
125
- post_install_message: "\n+-----------------------------------------------------------------------+\n|
126
- Please ensure you have installed exiftool version 11.10 or higher and |\n| it's
127
- found in your PATH (Try \"exiftool -ver\" on your commandline). |\n| For more
128
- details see |\n| https://exiftool.org/install.html
129
- \ |\n+-----------------------------------------------------------------------+\n
130
- \ "
124
+ post_install_message: |
125
+ +-----------------------------------------------------------------------+
126
+ | Please ensure you have installed exiftool version 11.10 or higher and |
127
+ | it's found in your PATH (Try "exiftool -ver" on your commandline). |
128
+ | For more details see |
129
+ | https://exiftool.org/install.html |
130
+ +-----------------------------------------------------------------------+
131
131
  rdoc_options: []
132
132
  require_paths:
133
133
  - lib
data/.aspell.pws DELETED
@@ -1,35 +0,0 @@
1
- personal_ws-1.1 en 34
2
- Coenen
3
- ExifTool
4
- Friedrich
5
- Gemfile
6
- Gitorious
7
- MERCHANTABILITY
8
- MultiExiftool
9
- MyConversion
10
- NONINFRINGEMENT
11
- PartOfSet
12
- README
13
- SemVer
14
- SemVerTag
15
- api
16
- config
17
- dir
18
- exiftool
19
- filenames
20
- gemspec
21
- gittycat
22
- gmail
23
- janfri
24
- jpg
25
- multi
26
- ok
27
- prepend
28
- refactoring
29
- stderr
30
- stdin
31
- sublicense
32
- szTheory
33
- timestamps
34
- tmpdir
35
- utc
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
data/Rakefile DELETED
@@ -1,31 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
-
4
- require_relative 'lib/multi_exiftool'
5
- require 'rim/tire'
6
- require 'rim/version'
7
- require 'rim/regtest'
8
-
9
- Rim.setup do |p|
10
- p.name = 'multi_exiftool'
11
- p.version = MultiExiftool::VERSION
12
- p.authors = 'Jan Friedrich'
13
- p.email = 'janfri26@gmail.com'
14
- p.summary = 'This library is a wrapper for the ExifTool command-line application (https://exiftool.org).'
15
- p.description = 'This library is a 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.'
16
- p.ruby_version = '>=1.9.1'
17
- p.license = 'MIT'
18
- p.homepage = 'https://github.com/janfri/multi_exiftool'
19
- p.install_message = %q{
20
- +-----------------------------------------------------------------------+
21
- | Please ensure you have installed exiftool version 11.10 or higher and |
22
- | it's found in your PATH (Try "exiftool -ver" on your commandline). |
23
- | For more details see |
24
- | https://exiftool.org/install.html |
25
- +-----------------------------------------------------------------------+
26
- }
27
- p.development_dependencies << %w(contest ~>0.1)
28
- p.development_dependencies << 'test-unit'
29
- p.requirements << 'exiftool, version 11.10 or higher'
30
- p.test_warning = false
31
- end
@@ -1,34 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- # stub: multi_exiftool 0.18.1 ruby lib
3
- #
4
- # This file is automatically generated by rim.
5
- # PLEASE DO NOT EDIT IT DIRECTLY!
6
- # Change the values in Rim.setup in Rakefile instead.
7
-
8
- Gem::Specification.new do |s|
9
- s.name = "multi_exiftool"
10
- s.version = "0.18.1"
11
-
12
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
13
- s.require_paths = ["lib"]
14
- s.authors = ["Jan Friedrich"]
15
- s.date = "2024-05-23"
16
- s.description = "This library is a 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
- s.email = "janfri26@gmail.com"
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/data/example.config", "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"]
19
- s.homepage = "https://github.com/janfri/multi_exiftool"
20
- s.licenses = ["MIT"]
21
- s.post_install_message = "\n+-----------------------------------------------------------------------+\n| Please ensure you have installed exiftool version 11.10 or higher and |\n| it's found in your PATH (Try \"exiftool -ver\" on your commandline). |\n| For more details see |\n| https://exiftool.org/install.html |\n+-----------------------------------------------------------------------+\n "
22
- s.required_ruby_version = Gem::Requirement.new(">= 1.9.1")
23
- s.requirements = ["exiftool, version 11.10 or higher"]
24
- s.rubygems_version = "3.6.0.dev"
25
- s.summary = "This library is a wrapper for the ExifTool command-line application (https://exiftool.org)."
26
-
27
- s.specification_version = 4
28
-
29
- s.add_development_dependency(%q<rake>, [">= 0"])
30
- s.add_development_dependency(%q<rim>, ["~> 2.17"])
31
- s.add_development_dependency(%q<contest>, ["~> 0.1"])
32
- s.add_development_dependency(%q<test-unit>, [">= 0"])
33
- s.add_development_dependency(%q<regtest>, ["~> 2"])
34
- end
@@ -1,6 +0,0 @@
1
- require 'regtest'
2
- require 'multi_exiftool'
3
-
4
- Regtest.sample 'read all tags' do
5
- MultiExiftool.read('regtest/test.jpg', tags: %w(-filemodifydate -fileaccessdate -fileinodechangedate -filepermissions))
6
- end
@@ -1,112 +0,0 @@
1
- ---
2
- sample: read all tags
3
- result:
4
- - - !ruby/object:MultiExiftool::Values
5
- values:
6
- sourcefile: regtest/test.jpg
7
- exiftoolversion: 12.26
8
- filename: test.jpg
9
- directory: regtest
10
- filesize: 43 KiB
11
- filetype: JPEG
12
- filetypeextension: jpg
13
- mimetype: image/jpeg
14
- jfifversion: 1.01
15
- exifbyteorder: Big-endian (Motorola, MM)
16
- imagedescription: KONICA MINOLTA DIGITAL CAMERA
17
- make: KONICA MINOLTA
18
- model: DYNAX 7D
19
- orientation: Horizontal (normal)
20
- xresolution: 72
21
- yresolution: 72
22
- resolutionunit: inches
23
- software: DYNAX 7D v1.10
24
- modifydate: 2005:09:13 20:08:50
25
- ycbcrpositioning: Centered
26
- exposuretime: 1/60
27
- fnumber: 9.5
28
- exposureprogram: Program AE
29
- iso: 400
30
- exifversion: '0221'
31
- datetimeoriginal: 2005:09:13 20:08:50
32
- createdate: 2005:09:13 20:08:50
33
- componentsconfiguration: Y, Cb, Cr, -
34
- brightnessvalue: 4.5
35
- exposurecompensation: -1
36
- maxaperturevalue: 4.5
37
- meteringmode: Multi-segment
38
- lightsource: Unknown
39
- flash: Off, Did not fire
40
- focallength: 75.0 mm
41
- subjectarea: 1504 1000 256 304
42
- makernoteversion: MLT0
43
- minoltaimagesize: Large
44
- whitebalance: Auto
45
- focusmode: AF-A
46
- afpoints: Center
47
- flashmode: Normal
48
- isosetting: 400
49
- freememorycardimages: 202
50
- hueadjustment: 0
51
- rotation: Horizontal (normal)
52
- imagenumber: 6
53
- noisereduction: Unknown (2)
54
- imagenumber2: 50
55
- zonematchingon: 'Off'
56
- compressedimagesize: 1598477
57
- previewimagestart: 39146
58
- previewimagelength: 0
59
- scenemode: Standard
60
- colormode: Natural sRGB
61
- minoltaquality: Fine
62
- flashexposurecomp: 0
63
- teleconverter: None
64
- imagestabilization: 'On'
65
- zonematching: ISO Setting Used
66
- colortemperature: 0
67
- lenstype: Minolta AF 28-135mm F4-4.5 or Other Lens
68
- usercomment: ''
69
- flashpixversion: '0100'
70
- colorspace: sRGB
71
- exifimagewidth: 3008
72
- exifimageheight: 2000
73
- customrendered: Normal
74
- exposuremode: Auto
75
- digitalzoomratio: 0
76
- focallengthin35mmformat: 112 mm
77
- scenecapturetype: Standard
78
- gaincontrol: Low gain up
79
- contrast: Normal
80
- saturation: Normal
81
- sharpness: Normal
82
- printimversion: '0300'
83
- compression: JPEG (old-style)
84
- thumbnailoffset: 39268
85
- thumbnaillength: 1820
86
- currentiptcdigest: e5ef1faceaa3d410961c63ab090136c7
87
- applicationrecordversion: 4
88
- supplementalcategories: Natur
89
- keywords:
90
- - Orange
91
- - Rot
92
- xmptoolkit: Image::ExifTool 9.45
93
- title: Abenddämmerung
94
- imagewidth: 1
95
- imageheight: 1
96
- encodingprocess: Baseline DCT, Huffman coding
97
- bitspersample: 8
98
- colorcomponents: 3
99
- ycbcrsubsampling: YCbCr4:2:0 (2 2)
100
- aperture: 9.5
101
- imagesize: 1x1
102
- lensid: Tokina AT-X 242 AF 24-200mm F3.5-5.6
103
- megapixels: 1.0e-06
104
- scalefactor35efl: 1.5
105
- shutterspeed: 1/60
106
- thumbnailimage: "(Binary data 1820 bytes, use -b option to extract)"
107
- circleofconfusion: 0.020 mm
108
- fov: 18.3 deg
109
- focallength35efl: '75.0 mm (35 mm equivalent: 112.0 mm)'
110
- hyperfocaldistance: 29.43 m
111
- lightvalue: 10.4
112
- - []
data/regtest/test.jpg DELETED
Binary file
data/test/data/a.jpg DELETED
Binary file
data/test/data/b.jpg DELETED
Binary file
data/test/data/c.jpg DELETED
Binary file