miniatura 0.3.4 → 0.3.7
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/lib/miniatura/logger.rb +6 -11
- data/lib/miniatura/options.rb +6 -8
- data/lib/miniatura/version.rb +1 -1
- data/lib/miniatura.rb +38 -20
- data/miniatura.gemspec +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a94c30b0898a4bffe0850ff5852de1d5bd7a8249
|
4
|
+
data.tar.gz: d213a6e19002f89344c69419be9425803cb593a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f025aa6cb718d6764f4ba269b57a304290289d50be1cc2478e3aae33fcea98244af2d35163302bdff6d518f8c55732d007af840856e79ddb2afd501d71294e9
|
7
|
+
data.tar.gz: 59bb4e8aa970fa81d20aba457dd175d743d68d87bc781817f65d7029733c424885b5df7a0948078a749ab5d7d859b7e81e2cfa803ba248fd918f9894641e3eb9
|
data/lib/miniatura/logger.rb
CHANGED
@@ -1,14 +1,9 @@
|
|
1
1
|
module Miniatura
|
2
|
-
|
3
|
-
|
2
|
+
class Logger
|
3
|
+
attr_reader :logger
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
@logger = Logger.new(STDOUT)
|
10
|
-
@logger.level = Logger::INFO
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
5
|
+
def initialize
|
6
|
+
@logger = Rails.logger
|
7
|
+
end
|
8
|
+
end
|
14
9
|
end
|
data/lib/miniatura/options.rb
CHANGED
@@ -14,18 +14,16 @@ module Miniatura
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def to_options
|
17
|
-
result = @options.map
|
18
|
-
send(k.to_s, v)
|
19
|
-
end
|
17
|
+
result = @options.map { |k, v| send(k.to_s, v) }
|
20
18
|
result << '-vframes 1'
|
21
19
|
result.join(' ')
|
22
20
|
end
|
23
21
|
|
24
22
|
def file_extension(value)
|
25
23
|
case value
|
26
|
-
when 'jpeg'
|
24
|
+
when 'jpeg'
|
27
25
|
'-c mjpeg'
|
28
|
-
when 'png'
|
26
|
+
when 'png'
|
29
27
|
'-c png'
|
30
28
|
else
|
31
29
|
''
|
@@ -34,11 +32,11 @@ module Miniatura
|
|
34
32
|
|
35
33
|
def rotate(value)
|
36
34
|
case value
|
37
|
-
when 90
|
35
|
+
when 90
|
38
36
|
'-vf transpose=1'
|
39
|
-
when 180
|
37
|
+
when 180
|
40
38
|
'-vf hflip '
|
41
|
-
when 270
|
39
|
+
when 270
|
42
40
|
'-vf transpose=2'
|
43
41
|
else
|
44
42
|
''
|
data/lib/miniatura/version.rb
CHANGED
data/lib/miniatura.rb
CHANGED
@@ -6,31 +6,28 @@ require 'miniatura/generate_command'
|
|
6
6
|
|
7
7
|
module Miniatura
|
8
8
|
def generate_thumb(options = {})
|
9
|
+
@exit_code, @error = nil
|
10
|
+
raise Errno::ENOENT unless File.exist?(current_path)
|
9
11
|
options[:file_extension] ||= 'jpeg'
|
10
|
-
options[:logger] = Rails.logger
|
11
|
-
size = options[:size]
|
12
12
|
options[:rotate] = 0
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
cmd = thumbnail.generate_command(options)
|
20
|
-
logger = Miniatura::Logger.new(options).logger
|
21
|
-
logger.info("Running command: #{cmd}")
|
22
|
-
exit_code, error = nil
|
23
|
-
raise Errno::ENOENT unless File.exist?(current_path)
|
24
|
-
Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
|
25
|
-
error = stderr.read
|
26
|
-
exit_code = wait_thr.value
|
27
|
-
end
|
28
|
-
handle_exit_code(exit_code, error, logger)
|
13
|
+
options[:size] = determine_thumb_dimension_ratio_from_uploaded_video(options[:size])
|
14
|
+
tmp_path = generate_temp_file(options[:file_extension])
|
15
|
+
cmd = generate_command_for_thumbnail(options, tmp_path)
|
16
|
+
show_logs(cmd)
|
17
|
+
execute_command(cmd)
|
18
|
+
handle_exit_code(@exit_code, @error)
|
29
19
|
File.rename tmp_path, current_path
|
30
20
|
end
|
31
21
|
|
32
22
|
private
|
33
23
|
|
24
|
+
def determine_thumb_dimension_ratio_from_uploaded_video(size)
|
25
|
+
video = MiniExiftool.new(current_path)
|
26
|
+
orientation = video.rotation
|
27
|
+
image_width, image_height = video_dimension(orientation, video.imagewidth, video.imageheight, size)
|
28
|
+
return "#{image_width.to_i}" + 'x' + "#{image_height.to_i}"
|
29
|
+
end
|
30
|
+
|
34
31
|
def video_dimension(orientation, video_width, video_height, size)
|
35
32
|
case orientation
|
36
33
|
when 0, 180
|
@@ -55,12 +52,33 @@ module Miniatura
|
|
55
52
|
return image_width, image_height
|
56
53
|
end
|
57
54
|
|
58
|
-
def
|
55
|
+
def generate_temp_file(file_extension)
|
56
|
+
File.join(File.dirname(current_path), "tmpfile.#{file_extension}")
|
57
|
+
end
|
58
|
+
|
59
|
+
def generate_command_for_thumbnail(options, temp_file_path)
|
60
|
+
thumbnail = GenerateCommand.new(current_path, temp_file_path)
|
61
|
+
return thumbnail.generate_command(options)
|
62
|
+
end
|
63
|
+
|
64
|
+
def show_logs(command)
|
65
|
+
logger = Miniatura::Logger.new.logger
|
66
|
+
logger.info("Running command: #{command}")
|
67
|
+
end
|
68
|
+
|
69
|
+
def execute_command(command)
|
70
|
+
Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
|
71
|
+
@error = stderr.read
|
72
|
+
@exit_code = wait_thr.value
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def handle_exit_code(exit_code, error)
|
77
|
+
logger = Miniatura::Logger.new.logger
|
59
78
|
if exit_code == 0
|
60
79
|
logger.info 'Success!'
|
61
80
|
else
|
62
81
|
logger.error "Failure due to following error: #{error}"
|
63
82
|
end
|
64
|
-
exit_code
|
65
83
|
end
|
66
84
|
end
|
data/miniatura.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
22
|
-
spec.add_development_dependency 'rake', '~>
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.14'
|
22
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
23
23
|
spec.add_development_dependency 'rspec', '~> 3.5'
|
24
24
|
spec.add_development_dependency 'carrierwave-video', '~> 0.5.6'
|
25
25
|
spec.add_development_dependency 'mini_exiftool', '~> 2.8'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miniatura
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ssooraj
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.14'
|
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.14'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '12.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|